假设我们在 C 中声明:
int a;
它的值是未定义的(让我们忘记那些默认设置为零的编译器吧)。但是这个未定义的值是否仍然具有变量的数据类型(整数)?
因此可能是 a=19382
、a=23
、a=-33332
... 但不是 a =33.2
?
这对我来说听起来很合乎逻辑,但不确定。
最佳答案
由于您未对其进行初始化,尽管 a
将消耗与已初始化的 int
相同的内存量,但内容是不确定的。
编译器必须将其视为int
,因此它可以具有任何整数值。它不能是 33.2,因为它不是 int
。然而,在某些体系结构上,它可能恰好包含一个“陷阱值”,每当您尝试访问“a”时,它都会导致错误。顺便说一句,我想不出任何关于 int 的示例,尽管 float 确实具有称为“信号 NAN”的值,并且如果您尝试将无效指针加载到地址寄存器中,某些体系结构将陷入困境。
关于c - 一个未初始化的变量可能有一个未定义的值,但那个未定义的值是否具有相同的数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32176104/