为什么Windows上的gcc会为变量分配特定值?

Car*_*ato 2 c variables

这是我的第一个问题,很高兴认识你!有人可以解释为什么这个代码用C编写

#include <stdio.h>

int main(){
 int choice;

 printf("\nSize of 'choice' %d\n", sizeof(choice));
 printf("Size of 'int' %d\n", sizeof(int));
 printf("Value of 'choice %d\n", choice);
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

在Windows上使用gcc -o C:\test.exe test.c(gcc版本2015/06/27)编译返回这些值

Size of 'choice' 4
Size of 'int' 4
Value of 'choice 2
Run Code Online (Sandbox Code Playgroud)

在Linux上,一切都按照我的预期运行,返回这些值

Size of 'choice' 4
Size of 'int' 4
Value of 'choice 0
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

非常感谢.

Som*_*ude 6

未初始化的本地非静态变量就是未初始化的.他们将具有不确定的价值.如果不使用他们的初始化导致不确定的行为.