免责声明: 这不是一个真实的例子.这只是这些语言如何运作的理论问题.
在发布和预增量运算符方面,C/C++,C#和Java之间究竟有什么区别?
这是我用VC++ 10,Java 1.6和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 |
+-----+-----+------+------+----+
Run Code Online (Sandbox Code Playgroud) 我在这个网站上遇到过这个问题,并在Eclipse中尝试过,但无法理解它们的评估方式.
int x = 3, y = 7, z = 4;
x += x++ * x++ * x++; // gives x = 63
System.out.println(x);
y = y * y++;
System.out.println(y); // gives y = 49
z = z++ + z;
System.out.println(z); // gives z = 9
Run Code Online (Sandbox Code Playgroud)
根据网站上的评论,x + = x ++*x ++*x ++解析为x = x +((x + 2)*(x + 1)*x),结果证明是真的.我想我错过了关于这个运算符优先级的一些东西.
我知道有几个关于x ++操作的问题,我知道++ x和x ++之间的区别.但现在我必须解决这个问题:
int x = 5;
x += x++ * x++ * x++;
Run Code Online (Sandbox Code Playgroud)
嗯,我知道这不应该太困难,但是,我还需要解释一下这个计算器是如何完成的,一步一步,我自己得不到它.