%= 运算符是什么?

8

在此示例中,%= 运算符是什么作用:


if (a > b)
   a %= b;

什么是它的用途,它常见吗?

"%=" 不是操作符。它包含两个单独的操作符 %=。因此,基本上 a %= b; 相当于 a = a % b; - Soner Gönül
2
@SonerGönül 微软似乎将其称为独立的运算符http://msdn.microsoft.com/en-us/library/ydwa9zh0.aspx - Mike Clark
@MikeClark 哇..我以前从没注意到过。谢谢你的澄清 :) - Soner Gönül
它确实是一个运算符!它是复合余数运算符。 - Eric Lippert
当然,规范也指出:除了赋值操作符“=”以外的赋值操作符称为复合赋值运算符。这些运算符对两个操作数执行指定的操作,然后将结果值分配给左操作数所表示的变量、属性或索引器元素。 - Jeppe Stig Nielsen
5个回答

15

来自MSDN:

% 运算符计算第一个操作数除以第二个操作数后的余数。所有数字类型都有预定义的余数运算符。

因此,在您的情况下,以下字符串

a %= b;

与此相同:

a = a % b;

这同样适用于所有运算符:

a += b 等同于 a = a + b
a /= b 等同于 a = a / b
a -= b 等同于 a = a - b
等等。


a <= b 等于 a = a < b?哇!;) - Alexis Beingessner
2
@Gankro:这是我2011年愚人节帖子的主题:http://blogs.msdn.com/b/ericlippert/archive/2011/04/01/compound-assignment-part-two.aspx -- 请注意此文章的第一部分很严肃,但第二部分是一个玩笑。 - Eric Lippert
1
@Eric:这个链接让我的生活更加丰富了。 - Alexis Beingessner

2
这是一个快捷方式,用于...
a = a % b;

这段代码获取ab余数并将结果存储在a中。


2
它获取的是“余数”,而不是“模数”。请参见http://blogs.msdn.com/b/ericlippert/archive/2011/12/05/what-s-the-difference-remainder-vs-modulus.aspx - Eric Lippert
@EricLippert感谢您的文章:) - John Woo

0

这与此相同:

a = a % b

0

% 是 C# 的运算符之一,它计算第一个操作数除以第二个操作数后的余数。

所以,5 % 2 等于 1

a %= b 等同于 a = a % b,只是一种更短的写法,表示相同的意思,就像:

i+=a => i = i + a
i*=a => i = i * a
i/=a => i = i / a

0

%= 是一个复合运算符。它类似于 a = a % b

% 用于获取余数

5 %= 2;//1
6%=2;//0

通常使用 % 将多个元素映射到较少的元素中。
因此,如果您有 100 个元素,并且想将它们映射到一个包含 20 个元素的数组中,您可以使用 % 运算符。
99%20;//19...So assign 99 to array index 19
50%20;//10...So assign 50 to array index 10

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接