Friday, 10 May 2019

Pre- & Post Increment in C#




I am a little confused about how the C# compiler handles pre- and post increments and decrements.



When I code the following:



int x = 4;
x = x++ + ++x;


x will have the value 10 afterwards. I think this is because the pre-increment sets x to 5, which makes it 5+5 which evaluates to 10. Then the post-increment will update x to 6, but this value will not be used because then 10 will be assigned to x.




But when I code:



int x = 4;
x = x-- - --x;


then x will be 2 afterwards. Can anyone explain why this is the case?


Answer



x-- will be 4, but will be 3 at the moment of --x, so it will end being 2, then you'll have




x = 4 - 2


btw, your first case will be x = 4 + 6



Here is a small example that will print out the values for each part, maybe this way you'll understand it better:



static void Main(string[] args)
{
int x = 4;

Console.WriteLine("x++: {0}", x++); //after this statement x = 5
Console.WriteLine("++x: {0}", ++x);

int y = 4;
Console.WriteLine("y--: {0}", y--); //after this statement y = 3
Console.WriteLine("--y: {0}", --y);

Console.ReadKey();
}



this prints out



x++: 4
++x: 6
y--: 4
--y: 2

No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print ...