【问题标题】:Difference between unary operators ( += , =+ , ++x , and x++)一元运算符( += 、 =+ 、 ++x 和 x++ )之间的区别
【发布时间】:2015-02-06 03:47:28
【问题描述】:

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

一个例子是什么?分别叫什么名字?

+= 与 =+

++x 与 x++

【问题讨论】:

  • @remyabel:我很确定这些运算符的行为与语言无关。

标签: c# unary-operator


【解决方案1】:

它们在更改值的方式和返回结果的方式上有所不同。

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

// +=
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 并返回结果。 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++ 需要创建一个内部临时变量来存储值,递增主变量,但返回临时变量,基本上更多的操作被使用。很久以前就知道了,不知道现在还适用吗

【讨论】:

    【解决方案2】:

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

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

    += 是在赋值之前添加

    =+和“+”有点混淆,可能是“-”,比如a=+7或者a=-7,反正就是直接赋值。

    同样,

    ++x 是“递增然后返回”

    x++ 是“先回再增”

    【讨论】:

    • 这实际上是错误的。 =+ 只是简单地赋值(与 = 相同)。
    • 这有助于理解和记住这一点。谢谢。
    【解决方案3】:

    ++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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-14
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-26
      • 2011-08-20
      相关资源
      最近更新 更多