所以,模运算可以给出三个值:
然后:
-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 ++中如何计算无符号操作数的模运算值?
所以,模运算可以给出三个值:
然后:
-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 ++中如何计算无符号操作数的模运算值?
简而言之,您的-7
将变成std::numeric_limit <size_t> ::max() + 1-7
(在您的平台上是什么),并且执行该值的计算。确实,在我的平台上,这证实了1
的结果。