我在Windows XP上使用DevC ++作为我的编译器。这是我的代码:
#include<stdio.h>
int main(void){
int a;
printf("%d\n", a);
int b = a;
a = 10;
printf("%d %d %d", a, b, a);
getch();
return 0;
}
输出:
2
10 2 10
我不明白为什么变量a
获得值2
。
答案 0 :(得分:4)
int a;
printf("%d\n", a);
未初始化的对象具有不确定的值。访问未初始化的对象是未定义的行为。如果您尝试打印其值,则可以打印2
,或42
或您的应用程序可能会崩溃。
答案 1 :(得分:0)
变量a
未由您初始化,因此它具有一些随机值。在另一个应用程序运行/计算机重新启动后,它可能等于另一个值。您必须指定一些值才能确保a
等于它。
答案 2 :(得分:0)
必须garbage value
存储在变量a
的地址编译器中,因为它没有初始化。
答案 3 :(得分:0)
这是一种未定义的行为。
我在计算机上使用相同的编译器获得了4334。