我对 C 编程非常陌生,并且有一个疑问...有人要求我查找 C 代码某些段中的错误...这一段让我有点困惑,所以非常感谢您的帮助...
int main(void)
{
int myInt = 5;
printf("myInt = %d");
return 0;
}
据我了解,这段代码没有任何问题。我想知道的是为什么这个语句打印出一个随机数??
我得到的输出是
myInt = 1252057154
非常感谢您的帮助...谢谢
最佳答案
您应该阅读更多有关C编程的内容。
并且您应该在编译时启用所有警告和调试。对于 GCC,这意味着 gcc -Wall -Wextra -g
(至少在 Linux 上)。
编译时
gcc -Wall -Wextra -g john.c -o john
我收到以下警告:
john.c: In function ‘main’:
john.c:4:5: warning: implicit declaration of function ‘printf’ [-Wimplicit-function-declaration]
john.c:4:5: warning: incompatible implicit declaration of built-in function ‘printf’ [enabled by default]
john.c:4:5: warning: format ‘%d’ expects a matching ‘int’ argument [-Wformat]
john.c:3:9: warning: unused variable ‘myInt’ [-Wunused-variable]
所以更正很简单:
/* file john.c */
#include <stdio.h>
int main(void)
{
int myInt = 5;
printf("myInt = %d\n", myInt);
return 0;
}
编译时不会出现警告。
请注意 printf
格式字符串末尾的 \n
。这很重要。
始终启用编译器可以向您提供的所有警告并信任编译器,因此请更正您的代码,直到不再发出警告为止。
并学习使用调试器(例如 Linux 上的 gdb
)。
您观察到的行为是未定义的行为; 任何事情都可能发生在C的符合标准的实现上(甚至是爆炸)。
黑客快乐。
关于C printf 打印随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9684880/