当b不为零时,我是否总是有`(a / b * b) + a % b == a`?

11

对于 int a, b,当仅有 ab 中的一个为负数时,a / ba % b 的结果会依赖于计算机。但是当 b 不为零时,是否始终满足 (a / b * b) + a % b == a 呢?


“always have” 是什么意思,a 和 b 是哪些类型? - Adrian Cornish
实际上,如果类型是无符号类型,则当b非零时,等式始终成立。 - R.. GitHub STOP HELPING ICE
我在哪里可以找到演示? - Teodor Ciuraru
1个回答

19

2
请注意,“如果商可表示”这个限定条件是关键的。例如,如果 a==INT_MIN 并且 b==-1,则相等性为假(行为未定义)。 - R.. GitHub STOP HELPING ICE
@R.. - 这对于二进制补码表示法是正确的,但不适用于符号-幅度表示法。我不确定关于反码。这三种都是C和C++的有效整数表示法。 - Pete Becker
抱歉,我的意思是一般情况下是错误的,因为二进制补码是一种可能性。在实践中也是错误的,因为不存在一补数和符号/大小实现。 - R.. GitHub STOP HELPING ICE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接