因此,模运算可以为您提供三个值:

然后:

-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_tint具有相同的等级;这始终是正确的):



简而言之,您的-7将变成std::numeric_limit<size_t>::max() + 1 - 7(无论您的平台上是什么),并且正在对该值执行计算。确实是on my platform, that confirms the result of 1

10-07 22:52