当我没有初始化它时,为什么值不为零?

时间:2016-06-19 05:02:32

标签: c printing initialization printf

这是我的代码:

int main(){


        int age;
        int height = 72;
        // 
        double blab = (10/23242^4);


        printf("I am %d years old.\n",age);
        printf("I am %d inches tall.\n",height);

        return 0;
}

使用blab变量使age的值为随机数。当我擦除这个变量时,值为零,因为我认为age的值应该是。

2 个答案:

答案 0 :(得分:3)

在C中,变量分配在两个地方之一:全局或堆栈。根据定义,如果没有赋值,则全局变量初始化为0;堆栈变量不是。

int willBeZero;

void Fn(void) {
    int uninit;
    int four = 4;
} // Fn(void)

因此,如果堆栈变量未初始化,它需要什么值?在该内存位置堆栈上发生的事情可能是0

如果您想在变量中使用特定值,则必须将其放在那里。

答案 1 :(得分:2)

未初始化的本地(非静态)变量具有不确定(以及看似随机)的值。在没有初始化的情况下使用它们会导致未定义的行为