未初始化的变量可能具有未定义的值,但该未定义的值是否具有相同的数据类型?

1 c types

假设我们在C中声明:

int a;
Run Code Online (Sandbox Code Playgroud)

它的值是未定义的(让我们忘记那些默认设置为零的编译器).但是这个未定义的值是否仍然具有变量的数据类型(整数)?

因此,它可能是a=19382,a=23,a=-33332...但不a=33.2

这对我来说听起来很合理,但不确定.

Tom*_*ner 5

因为你没有初始化它,虽然a会消耗与初始化相同的内存量int,但内容是不确定的.

编译器必须将其视为一个int,因此它可以具有任何整数值.它不能是33.2,因为那不是int.但是,在某些体系结构上可能会包含一个"陷阱值",这会在您尝试访问"a"时导致错误.虽然浮点数确实具有称为'信号NAN'的值,但是如果你尝试将无效指针加载到地址寄存器中,一些架构将会陷阱.