【发布时间】:2015-09-24 16:00:41
【问题描述】:
在学校学习C++时,当我们了解C++中的运算符++时,我们就知道++c和c++是不同的。
当我们用这种代码对此进行更多测试时:
#include <iostream>
using namespace std;
int main(){
int c=10;
cout<<++c<<" "<<c++<<endl;
return 0;
}
为什么上面的代码在 C++ 中给出了 12 和 10 的输出?
计算机(我们用 cout 和 printf 测试,我们也尝试过 VC++ 和 g++)给我这个:
12 10
“cout”和“printf”都给出了相同的结果。
但是当我们在计算中测试时,结果是可以的。
#include <iostream>
using namespace std;
int main(){
int c=10;
int r=++c^c++;
cout<<r<<endl;
return 0;
}
上面的源代码给了我 0 这意味着在执行上面的 XOR 操作时,左侧 (++c) 和右侧 (c++) 都为 XOR 运算符提供相同的值,即 11(我们通过以下方式得到值 11将 c++ 替换为 11 和计算机给出相同的结果 0)。
这真的是有线的。有人注意到了吗?
顺便说一句,我们在 Windows 和 Lubuntu 中都在调试模式和发布模式下进行了测试。所以我们认为这与标准库有关。但是我们并不期望我们可以将 stdlib 作为 NOOB 来阅读。所以希望有人能找到原因或解决方案。
【问题讨论】:
-
不,这并不奇怪。是的,数百万人注意到了它。
-
真的吗?那就谢谢你了。