一元运算符(+=、=+、++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
接下来的两个 ++x
和 x++
的功能顺序不同。 ++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
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
接下来的两个 ++x
和 x++
的功能顺序不同。 ++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