局部变量Vs全局变量

时间:2015-06-30 12:15:55

标签: c initialization

int main()
{
    int a;
    printf("the value is %d", a+'a');
    return 0;
}

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

2 个答案:

答案 0 :(得分:2)

在您的代码中,

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

生成undefined behaviour。 UB的输出是,未定义

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

答案 1 :(得分:0)

局部变量是堆栈变量。它们未初始化(与静态变量不同)。所以最好初始化自己。