Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

What is the difference between these unary operators in C#?

What would an example be? What is the name of each?

+= vs. =+

++x vs. x++

like image 531
Prageeth Liyanage Avatar asked Feb 06 '15 03:02

Prageeth Liyanage


2 Answers

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

like image 92
nxasdf Avatar answered Sep 24 '22 19:09

nxasdf


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"

like image 39
Jeb50 Avatar answered Sep 21 '22 19:09

Jeb50