【问题标题】:Why is value not zero when I didn't initialize it? [duplicate]当我没有初始化它时,为什么值不为零? [复制]
【发布时间】:2016-06-19 05:02:32
【问题描述】:

这是我的代码:

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 的值应该是。

【问题讨论】:

    标签: c printing initialization printf


    【解决方案1】:

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

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

    那么如果一个栈变量没有被初始化,它取什么值呢?该内存位置的堆栈上发生了什么,可能是0

    如果你想要一个变量中的特定值,你必须把它放在那里。

    【讨论】:

    • 它们也可以分配给寄存器,实际上标量变量通常是在执行任何优化时。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-08-09
      • 1970-01-01
      • 2021-07-19
      • 2017-04-17
      • 2019-12-24
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 2020-05-01
      相关资源
      最近更新 更多