我在 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
会得到 value 2
。
我在 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
会得到 value 2
。
int a;
printf("%d\n", a);
未初始化的对象具有不确定的值。访问未初始化的对象是未定义的行为。如果您尝试打印它的值,您可能会被2
打印出来,42
或者您的应用程序可能会崩溃。
变量a
未由您初始化,因此它具有一些随机值。在另一个应用程序运行/计算机重新启动后,它可能等于另一个值。您必须分配一些值以确保它a
等于它。
它必须garbage value
存储在编译器为变量分配的地址中a
,因为它没有被初始化。
这是一种未定义的行为。
我用相同的编译器在我的计算机上得到了 4334。