+= 、 -= 、 *= 和 /= 运算符是什么意思?

问题描述 投票:0回答:7

我一直在到处寻找这些含义以及它们的用法

+=
-=
*=
/=
,我发现的最多的是它们是“通过加法分配”,“按差分配”、“按乘积分配”、“按商分配”等,但我不知道何时或如何使用它们。如果有人可以向我解释这一点,我将非常感激。谢谢

c# operators
7个回答
42
投票

它们是简写:

a += b

相同

a = a + (b)

等等...

所以

  • a -= b
    相当于
    a = a - (b)
  • a *= b
    相当于
    a = a * (b)
  • a /= b
    相当于
    a = a / (b)

由于

b
上有括号,
a *= 10 / 5
不等于
a = a * 10 / 5
,而是等于
a = a * (10 / 5)

正如 Kevin Brydon 建议的那样 - 熟悉 C# 中的运算符此处


6
投票

请参阅规范及其小节中的

7.13 Assignment operators,特别是
7.13.2 Compound assignment

x op= y 形式的操作通过应用二元运算符重载解析(第 7.2.4 节)进行处理,就像该操作被编写为 x op y 一样。然后,

•如果所选运算符的返回类型可隐式转换为 x 的类型,则该操作将计算为 x = x op y,但 x 仅计算一次。

•否则,如果所选运算符是预定义运算符,且所选运算符的返回类型可显式转换为 x 的类型,并且 y 隐式可转换为 x 的类型,则该操作将计算为 x = (T)(x op y),其中 T 是 x 的类型,但 x 仅计算一次。

•否则,复合赋值无效,并出现编译时错误。


5
投票
a+=1 means a = a+1
a-=2 means a = a-2
a*=3 means a = a*3
a/=4 means a = a/4

5
投票

这些是赋值运算符(简写)

a += 1; is equal to a =  a + 1;

b -= 1; is equal to b =  b - 1;

a *= 1; is equal to a =  a * 1;

b /= 1; is equal to b =  b / 1;

参考:链接


2
投票

粗略地说,

var *operator*= expression
的意思是
var = var *operator* expression
。另外,我听说某处有文档。


1
投票

这是一个简短的形式。所以不要写:

x = x + 1;

您可以简单地写:

x += 1;

具有相同的效果。


0
投票

这些是速记运算符。
当您执行操作并将结果存储到它们之间的变量之一时,将使用这些。也就是说,您将结果存储到操作数之一中 假设示例
1)x=x+y;
在这里你可以做 x+=y;
例如 2) x=x+1;
在这里你可以做 x+=1;

© www.soinside.com 2019 - 2024. All rights reserved.