#include<stdio.h>
int main()
{
int x, y, z;
z = x+y;
printf("%d", z);
return 0;
}
我在GCC编译器中获得了32765,代码块在某处不打印任何内容,并显示0。
答案 0 :(得分:1)
(具有自动存储持续时间的)局部变量如果没有静态存储持续时间,则不会隐式初始化。
使用具有不确定(甚至是陷阱)值的未初始化变量会导致不确定的行为。
但是,如果您要通过以下方式更改程序
#include<stdio.h>
int x, y;
int main( void )
{
int z;
z = x + y;
printf( "%d", z );
return 0;
}
或采用以下方式
#include<stdio.h>
int main( void )
{
static int x, y;
int z;
z = x + y;
printf( "%d", z );
return 0;
}
那么实际输出将为0。因为变量x
和y
具有静态存储持续时间,并且由编译器隐式初始化为零。