gpt4 book ai didi

c++ - C++ 中带负数的整数除法舍入

转载 作者:IT老高 更新时间:2023-10-28 12:41:22 26 4
gpt4 key购买 nike

假设 ab 都是 int 类型,并且 b 是非零的。考虑在以下情况下执行 a/b 的结果:

  1. ab 都是非负数。
  2. ab 都是否定的。
  3. 其中有一个是否定的。

在情况 1 中,结果向下舍入到最接近的整数。但是标准对案例 2 和案例 3 有什么规定?我在 Internet 上发现的一份旧草案表明它依赖于实现(是的,甚至是案例 2),但委员会倾向于使其始终“向零舍入”。有谁知道(最新)标准说什么?请仅根据标准来回答,而不是根据什么是有意义的,或者特定的编译器做了什么。

最佳答案

作为其他答案的更新:

C++11最后一稿,n3242对于大多数实际目的而言,它与实际的 C++11 标准相同,在 5.6 第 4 点(第 118 页)中说:

For integral operands the / operator yields the algebraic quotient with any fractional part discarded; (see note 80)

注释 80 状态(注意注释是非规范性的):

80) This is often called truncation towards zero.

第 4 点继续说明:

if the quotient a/b is representable in the type of the result, (a/b)*b + a%b is equal to a.

这可以表明要求 a%b 的符号与 a 的符号相同(当不为零时)。

关于c++ - C++ 中带负数的整数除法舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/319880/

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