一元运算符(+=、=+、++x 和 x++)之间的区别

Difference between unary operators ( += , =+ , ++x , and x++)

C#中的这些一元运算符有什么区别?

举个例子是什么?每个人的名字是什么?

+= 与 =+

++x 与 x++

它们在更改值的方式以及 return 结果的方式上有所不同。

前两个 +==+ 的行为方式是第一个递增变量,另一个设置变量。他们没有关系。观察以下代码:

// +=
x = 1;
printf( x += 1 ); // outputs 2, the same as x = x+1
printf( x );      // outputs 2

// =+
x = 1;
printf( x =+ 1 ); // outputs 1, the same as x = 1;
printf( x );      // outputs 1

接下来的两个 ++xx++ 的功能顺序不同。 ++x 将使您的变量增加 1,并 return 结果。 x++ 将 return 结果加 1。

// ++x
x = 1;
printf( ++x ); // outputs 2, the same as x = x+1
printf( x );   // outputs 2

// x++
x = 1;
printf( x++ ); // outputs 1
printf( x );   // outputs 2

它们主要用于 for 循环和 while 循环。

在速度方面,++x被认为比x++快很多,因为x++需要创建一个内部临时变量来存储值,增加主变量,但是return 临时变量,基本上操作比较多。很久以前学的,不知道现在还适用

让我们可视化 第一个,+= 和 =+。

因为“+”是动作,“=”是赋值,所以

+= is to add BEFORE assignment

=+ is a bit confusing with "+", it could be "-", for example a=+7 or a=-7, anyway, it's a direct assignment.

同样,

++x is "increment then return"

x++ is "return then increase"

++x 与 x++ 是一元运算符。 ++x 表示预增量,x++ 表示 post 增量。

int temp;
temp = 1;
Console.WriteLine(++temp); // Outputs 2
temp = 1;
Console.WriteLine(temp++); // outputs 1
Console.WriteLine(temp); // outputs 2

前缀递增表示:

The result of the operation is the value of the operand after it has been incremented.

后缀增量表示:

The result of the operation is the value of the operand before it has been incremented.

现在如下: += 表示温度 += 10; // 等同于 temp = temp + 10;

这个 =+ 不是有效的运算符。 如果这样做:

str = + str;  // will throw an error.
int a;
a = +2; // sort of meaningless . 2 and +2 means same.

更多信息:Is there such thing as a "=+" operator?

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/increment-operator