免责声明: 这不是一个真实的例子.这只是这些语言如何运作的理论问题.
在发布和预增量运算符方面,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) x = 1;
std::cout << ((++x)+(++x)+(++x));
Run Code Online (Sandbox Code Playgroud)
我希望输出是11,但实际上12.为什么?
#include <stdio.h>
int main()
{
int x = 0;
if (x++)
printf("true\n");
else if (x == 1)
printf("false\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
false
Run Code Online (Sandbox Code Playgroud)
为什么输出错误?
x++是后增量; 这意味着使用的值x然后递增.如果是这样,那么x=0应该使用,答案应该是真的.