int main()
{
int a;
printf("the value is %d", a+'a');
return 0;
}
在上面的代码中a
是局部变量,并且局部变量被初始化为垃圾值,如果我们没有明确给它们赋值的话。所以输出应该是一些垃圾值。但为什么我得到的输出为97
?局部变量与全局变量
int main()
{
int a;
printf("the value is %d", a+'a');
return 0;
}
在上面的代码中a
是局部变量,并且局部变量被初始化为垃圾值,如果我们没有明确给它们赋值的话。所以输出应该是一些垃圾值。但为什么我得到的输出为97
?局部变量与全局变量
在你的代码,
printf("the value is %d", a+'a');
产生undefined behaviour。 UB的输出是undefined。
对于调用UB的语句,您不能依赖(或证明)结果(,如果有任何)。
局部变量是堆栈变量。它们没有被初始化(不像静态变量)。所以更好地初始化你自己。
这应该是一条评论。 –
您正在调用未定义的行为。可能非常好地将一些随机值存储在当前变量指向的内存中。 –
而97是垃圾值。 –
什么是问题 – klefevre