【发布时间】:2012-04-21 08:18:36
【问题描述】:
今天我在用C#写一个程序,我用%来计算一些索引...我的程序没有工作,所以我调试它,我意识到“% " 不像我知道的其他程序语言那样工作。
例如:
在 Python 中,% 返回如下值:
for x in xrange (-5, 6):
print x, "% 5 =", x % 5
-5 % 5 = 0
-4 % 5 = 1
-3 % 5 = 2
-2 % 5 = 3
-1 % 5 = 4
0 % 5 = 0
1 % 5 = 1
2 % 5 = 2
3 % 5 = 3
4 % 5 = 4
5 % 5 = 0
在 C# 中:
for (int i = -5; i < 6; i++)
{
Console.WriteLine(i + " % 5 = " + i % 5);
}
-5 % 5 = 0
-4 % 5 = -4
-3 % 5 = -3
-2 % 5 = -2
-1 % 5 = -1
0 % 5 = 0
1 % 5 = 1
2 % 5 = 2
3 % 5 = 3
4 % 5 = 4
5 % 5 = 0
是我做错了什么还是% 没有正常工作?
【问题讨论】:
-
在 C 派生语言中,% 不是取模运算符。它是 remainder 运算符。 Eric Lippert explains.
-
@RaymondChen 这看起来像是一个答案,而不是评论。不过,如果你愿意,我可以投票。
-
如何在 C# 中使用取模运算符?
-
Wolfy - 如果值为负,则加 5。
-
@Wolfy
c = a % b; if (c < 0) { c += b; } return c;