C 编程:现代方法,第 2 版 2008 年, 我有一个练习:
我的代码:
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int a,b,c,d,e,f,a1,a2,a3;
float x,y,z,x1,x2,x3;
printf("a:%d ,b:%d ,c:%d ,d:%d ,e:%d ,f:%d ,a1:%d ,a2:%d ,a3:%d \n x:%f ,y:%f ,z:%f ,x1:%f ,x2:%f ,x3:%f",a,b,c,d,e,f,a1,a2,a3,x,y,z,x1,x2,x3);
}
我得到的结果:
不确定的值。
该值可能为零,也可能是其他值。在不同的运行中该值可能不同。计划早期发生的事情可能会影响收到的价值。 它甚至可能是具有这些陷阱的机器上的陷阱表示,在这种情况下读取它会导致未定义的行为。
C17 §6.7.9 ¶10 定义了当对象未显式初始化时会发生什么:
如果一个具有自动存储期限的对象没有显式初始化,那么它的值是不确定的。如果具有静态或线程存储持续时间的对象未显式初始化,则:
如果是指针类型,则初始化为空指针;
如果是算术类型,则初始化为(正数或无符号)零;
如果是聚合,则根据这些规则(递归地)初始化每个成员,并且任何填充都初始化为零位;
- 如果是联合体,则根据这些规则(递归地)初始化第一个命名成员,并且任何填充都初始化为零位;
- C17 §3.19.2 ¶1 定义
- 不确定值
如下:
未指定的值或陷阱表示