C uninitialized int的值为1而不是0

时间:2017-01-17 00:37:15

标签: c

#include <stdio.h>
#include <string.h>
#include "prac.h"
#define MYNAME "Butter"

int main() {
    int numberOfKids;
    int weight;
    int shirt;

    printf("If I eat a Watermelon I will weigh %d lbs \n", weight + numberOfKids+ shirt );
    return 0;
}

我编译并运行程序,结果为1;虽然我预计它是0.当我单独检查每个变量的值时,权重变量的值是1.有人可以解释为什么特定变量结果不是0吗?我是C的新手,想要尝试基础知识,以便更深入地了解C的细微差别。任何帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:5)

默认情况下,C中函数内的变量不保证设置为任何值。在内存中,最后存储的内容(可能不会被刷新/擦除为0)将是int初始化的内容。

这在Initializing variables in C

中得到了解答

编辑:正如chux所述,如果未给出初始值,则本地静态变量将初始化为0。还涉及Is un-initialized integer always default to 0 in c?