gpt4 book ai didi

c - c 中的二进制补码范围

转载 作者:行者123 更新时间:2023-11-30 19:37:30 26 4
gpt4 key购买 nike

我计算出,要存储在 int 数据类型中的可能数字的二进制补码范围是 +32767 到 -32768,然后我在 CodeBlocks 上给出了一个 int 值大于 32767 并且成功了!

我知道,如果你给一个数组提供的值比声明的值多,它将需要比预期更多的
位,从而破坏另一个变量。

我的问题是当我给一个数据类型一个超出其范围的值时,是否会发生同样的事情
二进制补码范围?如果不是的话会发生什么......

最佳答案

int最小大小为 16 位,可以容纳 -32,768 到 +32,767。它的实际大小因操作系统、编译器而异。 ISO C 标准要求 int 能够至少保存 -32,767 到 +32,767,但并不将其限制为仅这些值。

它允许更大,并且可以在任何现代 32 位或 64 位操作系统上运行。 20 年前,在 16 位 DOS 中,您会看到 16 位 int,但在任何现代操作系统上,它通常是 32 位。

如果溢出signed int,则行为未定义。理论上,编译器可以做任何事情,因为符合标准的 C 程序不应该触发溢出。实际上,该值通常会从正值环绕到负值,反之亦然。

溢出的unsigned int是明确定义的。值保证换行。如果unsigned int是16位,则65535U + 1U == 0U。如果它大于 16 位,则 65535U + 1U == 65536U(无溢出)。

关于c - c 中的二进制补码范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39776966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com