This question already has answers here:
What is Undefined Behaviour in C? [duplicate]
                                
                                    (5个答案)
                                
                        
                                在8个月前关闭。
            
                    
#include<stdio.h>
int main()
{
  int x, y, z;
  z = x+y;
  printf("%d", z);
  return 0;
}


我在GCC编译器中得到32765,代码块在某处不打印任何内容,并显示0。

最佳答案

如果局部变量(具有自动存储期限)不具有静态存储期限,则不会隐式初始化。

使用具有不确定(甚至陷阱)值的未初始​​化变量会导致未定义行为。

但是,如果您要通过以下方式更改程序

#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。因为变量xy具有静态存储持续时间,并且由编译器隐式初始化为零。

10-08 15:47