【发布时间】:2014-10-14 20:53:24
【问题描述】:
我总是希望它可以像这里描述的那样工作:What is x after "x = x++"?
但是当我尝试测试它时:
int x = 0;
x = x++;
printf("x = %d\n", x);
结果不是我预期的 0,而是 1。我们在 VS2012 和 g++(4.7 版)中对其进行了测试。
请注意,此代码按预期打印 0:
int x = 0;
int y = x++;
printf("y = %d\n", y);
【问题讨论】:
-
因为你在调用 UB。它可以返回任何它想要的东西并且仍然是正确的。
-
或者不返回任何东西,而是召唤鼻恶魔,就此而言。
-
因为你的期望是错误的。该问题被标记为“java”;这个问题被标记为“c++”。
-
你真的不应该混合'n'比较语言,直到你对它们非常流利。 Java 和 C++ 非常不同。 JavaScript 是此类“比较”的最佳参考。你会相信
0 == ""是true吗?在 JavaScript 中是的。但是你会期望它在另一种语言中如此吗?不是。 -
Java 和 C++ 是不同的语言,它们恰好有一些共同的句法符号。这些符号的含义通常不同。
标签: c++ operators expression