Difference of Unary operators ( += , =+ , ++x , x++ )

前端 未结 3 782
青春惊慌失措
青春惊慌失措 2021-01-14 04:56

What is the difference between these unary operators in C# ? . Can you provide me with example?

Please provide the name of each. :)

+= vs =+

++x vs

相关标签:
3条回答
  • 2021-01-14 05:22

    This has no doubt been answered before, but anyway...

    They differ in how they change the value and how they return the result.

    The first two += and =+ behave in the way that the first increments a variable, the other sets a variable. They are not related. Observe the following code:

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

    The next two, ++x and x++, differ in the order their function. ++x will increment your variable by 1 and return the result. x++ will return the result and increment by 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
    

    They are mostly useful for for loops and while loops.

    In terms of speed, ++x is considered a lot faster than x++ since x++ needs to create an internal temporary variable to store the value, increment the main variable, but return the temporary variable, basically more operations are used. I learned this a looong time ago, I don't know if it still applies

    0 讨论(0)
  • 2021-01-14 05:27

    Let's visualize the first ones, += and =+.

    Because "+" is action, "=" is assignment, so

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

    Similarly,

    ++x is "increment then return"

    x++ is "return then increase"

    0 讨论(0)
  • 2021-01-14 05:27

    ++x vs x++ are unary operators. ++x means pre increment and x++ means post increment.

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

    Prefix increment means:

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

    Postfix increment means:

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

    Now the following: += means temp += 10; // same as temp = temp + 10;

    This =+ isn't a valid operator. If one does this:

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

    More here: Is there such thing as a "=+" operator?

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

    0 讨论(0)
提交回复
热议问题