因此,模运算可以为您提供三个值:
然后:
-7%5 = 3(算术,余数> = 0)
-7%5 = -2(C++)
-7%(size_t)5 = 4(C++)
另一个示例:
-7%4 = 1(数学,余数> = 0)
-7%4 = -3(C++)
-7%(size_t)4 = 1(C++)
当左操作数为正时,这三种方法之间的答案都是相同的。但是对于负值,它们似乎都有自己的方法。如何在C++中计算无符号操作数上的模运算值?
最佳答案
当您混合带符号和无符号的值时,会发生这种情况-困惑!
现在,请参见下面的粗体部分(假定您的size_t
与int
具有相同的等级;这始终是正确的):
简而言之,您的-7
将变成std::numeric_limit<size_t>::max() + 1 - 7
(无论您的平台上是什么),并且正在对该值执行计算。确实是on my platform, that confirms the result of 1
。