gpt4 book ai didi

c++ - **有符号**正整数的一元减运算符何时会导致溢出?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:37 26 4
gpt4 key购买 nike

通常,INT_MIN-2 ^ nINT_MAX2 ^ n - 1

是否可以保证,如果 xpositive 类型的 int 则 expressoin -x 没有不会导致溢出?

最佳答案

它是隐式保证的,因为它对所有允许的签名形式都是正确的:

(以 16 位 int 为例)

  • 1 的补码,INT_MIN = -32767, INT_MAX = 32767
  • 二进制补码,INT_MIN = -32768,INT_MAX = 32767
  • 符号和大小,INT_MIN = -32767,INT_MAX = 32767

不允许使用其他形式。正如我们所见,对于所有允许的形式,abs(INT_MIN) >= abs(INT_MAX)

作为旁注,INT_MAX 不允许小于 32767 并且 INT_MIN 不允许小于 -32767。这是由 limits.h 的要求保证的。

关于c++ - **有符号**正整数的一元减运算符何时会导致溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46095397/

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