Friday, December 28, 2018

Pre & post increment operator behavior in C, C++, Java, & C#




DISCLAIMER: This is not a real-world example. It is just a theoretical question of how these languages work.



What exactly are the differences between C/C++, C#, and Java when it comes to post & pre increment operators?



This is what I get with VC++10, Java 1.6, and C# 4




int a = 2;
int b = a++ + a++;
int c = ++a + a++ + a++;

+-----+------+------+----+
| C | C++ | Java | C# |
+-----+-----+------+------+----+
| a | 7 | 7 | 7 | 7 |
+-----+-----+------+------+----+

| b | 4 | 4 | 5 | 5 |
+-----+-----+------+------+----+
| c | 15 | 15 | 16 | 16 |
+-----+-----+------+------+----+

Answer



Java and C# evaluate expressions from left to right, and the side-effects are visible immediately.



In C++, the order of evaluation of subexpressions is unspecified, and modifying the same object twice without an intervening sequence point is undefined behavior.


No comments:

Post a Comment

plot explanation - Why did Peaches' mom hang on the tree? - Movies & TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...