gpt4 book ai didi

c - 是否否定 INT_MIN 未定义的行为?

转载 作者:太空狗 更新时间:2023-10-29 15:47:24 29 4
gpt4 key购买 nike

假设我有一个来自外部源的变量 i:

int i = get_i();

假设 iINT_MIN 和二进制补码表示,-i 是未定义的吗?

最佳答案

这取决于平台。 C 支持三种负数表示法(参见 C99 标准的 section 6.2.6.2):

  • 补码。
  • 补语。
  • 符号和大小。

用补码、符号和大小定义-INT_MIN(等于INT_MAX)。对于二进制补码,它取决于符号位为 1 且所有值位为零的值是陷阱表示还是正常值。如果它是一个正常值,-INT_MIN 会溢出,导致未定义的行为(参见 C99 标准的 section 6.5)。如果它是陷阱表示,-INT_MIN 等于 INT_MAX

也就是说,大多数现代平台使用二进制补码而不使用陷阱表示,因此 -INT_MIN 通常会导致未定义的行为。

关于c - 是否否定 INT_MIN 未定义的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37301078/

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