2015-06-30 290 views
-2
int main() 
{ 
    int a; 
    printf("the value is %d", a+'a'); 
    return 0; 
} 

在上面的代码中a是局部变量,并且局部变量被初始化为垃圾值,如果我们没有明确给它们赋值的话。所以输出应该是一些垃圾值。但为什么我得到的输出为97局部变量与全局变量

+2

您正在调用未定义的行为。可能非常好地将一些随机值存储在当前变量指向的内存中。 –

+1

而97是垃圾值。 –

+0

什么是问题 – klefevre

回答

2

在你的代码,

printf("the value is %d", a+'a'); 

产生undefined behaviour。 UB的输出是undefined

对于调用UB的语句,您不能依赖(或证明)结果(,如果有任何)。

0

局部变量是堆栈变量。它们没有被初始化(不像静态变量)。所以更好地初始化你自己。

+3

这应该是一条评论。 –