如果块被赋值为零,则内部变量,即使if表达式在C中的计算结果为false

时间:2012-08-16 11:42:31

标签: c

#include<stdio.h>
int main(void) {
    int a = 123,b,c;
    if(a>300) {
        b=200;
    }
    c=4556;
    printf("b = %d\n",b);
    return 0;
}

现在好像块评估为false所以如果不应该执行块,但代码将b的值打印为0。 此外,如果在if块结束后未分配c的值,则代码显示b的一些垃圾值。 任何人都可以告诉我为什么会发生这种情况,据我所知,b必须为第一个案例显示一些垃圾价值。

1 个答案:

答案 0 :(得分:5)

除非您初始化变量,否则您无法确定它们的值是什么,因此这并不令人惊讶。如果您希望b变量包含有意义的值,请使用该值初始化它。