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

标签 c types

假设我们在 C 中声明:

int a;

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

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

这对我来说听起来很合乎逻辑,但不确定。

最佳答案

由于您未对其进行初始化,尽管 a 将消耗与已初始化的 int 相同的内存量,但内容是不确定的。

编译器必须将其视为int,因此它可以具有任何整数值。它不能是 33.2,因为它不是 int。然而,在某些体系结构上,它可能恰好包含一个“陷阱值”,每当您尝试访问“a”时,它都会导致错误。顺便说一句,我想不出任何关于 int 的示例,尽管 float 确实具有称为“信号 NAN”的值,并且如果您尝试将无效指针加载到地址寄存器中,某些体系结构将陷入困境。

关于c - 一个未初始化的变量可能有一个未定义的值,但那个未定义的值是否具有相同的数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32176104/

相关文章:

c - 我想将一个数组从我的主要方法传递到我的函数(min),以便可以在函数(min)中计算最小值

c++ - 从套接字获取地址族。 Linux

c - 在 osx 上使用 gcc 编译 allegro5 程序时出错

delphi - 类型差异

泛型类的 Java 工厂

c - 无法在 C 中打印 float64 值

python - TypeVar ('T' ) 和 Any 之间的区别

c - 指针变量在内存中是如何分配的?内存分配是否取决于数据类型?

function - 为什么 Haskell 无点函数版本会导致模棱两可的类型错误?

C程序查找一个c文件的函数名