【发布时间】:2017-05-31 22:26:32
【问题描述】:
#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。当我单独检查每个变量的值时,weight 变量的值为 1。有人可以解释为什么特定变量的结果不是 0?我是 C 的新手,想尝试基础知识以更深入地了解 C 的细微差别。任何帮助将不胜感激。
【问题讨论】:
-
因为具有未初始化值的变量具有未定义的行为。
-
换句话说,未初始化变量的值必须是什么没有规则。可以是
0,也可以是1,也可以是429496729。简而言之。不要依赖未初始化的变量来获得某个值。 -
@leaf 观点的扩展。在某些范围内,未初始化的变量具有明确定义的默认情况。并非所有未初始化的变量都是 UB。
-
是的。例如,某些静态变量被初始化为零。 c-faq.com/decl/initval.html
-
@user4581301 我不知道。感谢您的更正。
标签: c