如果我运行这个程序:
#include <stdio.h>
int main()
{
int a=32,b=2,c,i;
for(i=0;i<3;i++){
printf("%d\n",c);
c=a/b;
a=c;
}
return 0;
}
输出是:
32765
16
8
在那里,我没有定义C的值,这个输出32765是从哪里来的? 即使我再次运行此代码更多时间,它也会显示不同的值,例如 32764,32767。为什么会显示这种不同的输出?
最佳答案
由于c
具有自动存储期限(即非静态局部变量)且未初始化,因此其值为不确定。尝试打印从未获取其地址的未初始化变量(即不是地址运算符 &
的主题)会调用 undefined behavior .
即使您确实获取了c
的地址,如果它包含陷阱表示,您仍然可能会出现未定义的行为。如果它不包含陷阱表示(并且大多数实现没有它们),则该值是未指定,这仅意味着无法预测打印值。
关于c - 打印无法识别的 int 变量会输出什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55652586/