【发布时间】:2015-02-06 03:47:28
【问题描述】:
C#中这些一元运算符有什么区别?
一个例子是什么?分别叫什么名字?
+= 与 =+
++x 与 x++
【问题讨论】:
-
@remyabel:我很确定这些运算符的行为与语言无关。
标签: c# unary-operator
C#中这些一元运算符有什么区别?
一个例子是什么?分别叫什么名字?
+= 与 =+
++x 与 x++
【问题讨论】:
标签: c# unary-operator
它们在更改值的方式和返回结果的方式上有所不同。
前两个+= 和=+ 的行为方式是第一个递增一个变量,另一个设置一个变量。它们不相关。观察以下代码:
// +=
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
接下来的两个++x 和x++ 的功能顺序不同。 ++x 将变量加 1 并返回结果。 x++ 将返回结果并递增 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++ 需要创建一个内部临时变量来存储值,递增主变量,但返回临时变量,基本上更多的操作被使用。很久以前就知道了,不知道现在还适用吗
【讨论】:
让我们可视化第一个,+= 和 =+。
因为“+”是动作,“=”是赋值,所以
+= 是在赋值之前添加
=+和“+”有点混淆,可能是“-”,比如a=+7或者a=-7,反正就是直接赋值。
同样,
++x 是“递增然后返回”
x++ 是“先回再增”
【讨论】:
++x 与 x++ 是一元运算符。 ++x 表示前置增量,x++ 表示后置增量。
int temp;
temp = 1;
Console.WriteLine(++temp); // Outputs 2
temp = 1;
Console.WriteLine(temp++); // outputs 1
Console.WriteLine(temp); // outputs 2
前缀增量表示:
运算的结果是操作数得到后的值 增加了。
后缀增量表示:
运算的结果是操作数之前的值 增加了。
现在如下: += 表示温度 += 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
【讨论】: