在源代码中只定义了任意数量的变量并尝试在不初始化的情况下打印它之后。我得到最后两个变量和一个或两个其他变量的值为零。最后两个变量就像是盲目的(至少对我来说(,我们可以说它被声明为零。
当我在函数中定义变量时,存储类默认为auto,它的值在这种情况下是垃圾值,为什么最后两个变量每次都显示为零,而其他一些为零的变量在多次执行后不会改变。
注意
1.如果我把最后两个零值和其他有零的变量作为垃圾,那么为什么零在执行后没有变化,而其他值在执行后却在变化。
2.无论如何,定义了任意数量变量的最后两个变量将为零。为什么这只发生在最后两个变量中。
3.这不仅发生在我在Windows 8和Linux(pop-Os(中使用gcc编译器尝试过的vs代码的在线编译器上,因为C程序依赖于平台。
CPP也是如此
首次执行图片
第二次执行图片
代码
#include<stdio.h>
int main(){
int a,b,c,d,e,f;
printf("%dt%dt%dt%dt%dt%dt",a,b,c,d,e,f);
return 0;
}
执行背后有什么逻辑吗。有人请解释一下。非常感谢。
如果不初始化变量并使用其值,将导致未定义的行为。例如,
int i; //i has not been initialized and so holds garbage value
printf("%dn",i);//this will lead to undefined behavior.
未定义的行为意味着任何1都可能发生,包括但不限于提供预期输出的程序。但是永远不要依赖(或根据未定义行为的程序的输出得出结论(。
1对于未定义行为的更准确的技术定义,请参阅此处,其中提到:对程序的行为没有限制