我在谷歌搜索-1%2是(-1)mod 2 = 1,但在xcode -1%2 = -1。有谁告诉我为什么?谢谢你的帮助!^。^
答案 0 :(得分:3)
本文取自this post.
Objective-C是C99的超集,当a % b
为负时,C99将a
定义为否定。另请参阅Wikipedia entry on the Modulo operation和此StackOverflow question.
像(a >= 0) ? (a % b) : ((a % b) + b)
这样的东西(尚未经过测试,可能有不必要的括号)应该可以得到你想要的结果。
答案 1 :(得分:2)
通常,模运算符使用以下公式计算:
number % modulus := number - (number / modulus) * modulus
在您的情况下,您获得(-1) - (-1/2)*2 = (-1) - (0) = -1
。请注意,由于我们使用的是积分数学,因此-1/2的计算结果为0。
如果所有计算机都以这种方式运行,或者根据硬件的不同而有所不同,那就超出了我的要求,但我记得几年前这个计算机就出现了。