C程序中的运算符值评估问题

时间:2014-01-07 05:14:41

标签: c

#include<stdio.h>
void main(){

     int i;
     i = i-3;
     printf("%d",i); // output -3
}

为什么每次运行这个c程序时答案都是3。但我们知道c选择未初始化的变量的随机值。那么为什么它给-3。我也尝试使用自动存储类。我正在使用codeblocks编译器。

2 个答案:

答案 0 :(得分:3)

您的代码导致了未定义的行为。代码中可能发生任何事情。您的代码可能会在屏幕上打印3或300或蒙娜丽莎图片。

6.3.2.1p2:

如果左值指定了一个可以使用寄存器存储类声明的自动存储持续时间的对象(从未使用过其地址),并且该对象未初始化(未使用初始化程序声明,并且未对其进行任何赋值)在使用之前),行为未定义。

答案 1 :(得分:0)

此代码有以下错误:

未初始化的本地变量'i'。

错误的统计信息&gt;&gt;&gt;

  

XX。我们知道c为未初始化的变量选择随机值.xX