我是 C++ 新手,正在研究增量和减量运算符。
所以我尝试了这个例子:
int x = 4;
cout << ++x << " " << x++ << " " << x++ << endl << endl;
cout << x << endl;
它返回这个weirdC++ .NET 和 QtCreator 以及 5 个在线 C++ 编译器的输出:
7 5 4
7
The weird事情是我期望这样的事情:
5 5 6
7
你能解释一下发生了什么吗?
请注意cout << x++ << ++x;
只是另一种表示法:
operator<<( operator<< (cout, x++), ++x);
The order其中你的x++ and ++x评估的语句是不明确的,你的代码的效果也是如此。
即使在您的特定示例中似乎是从右到左发生的,您也应该not无论如何都要依赖它。
只需使用多个语句进行另一个实验:
cout << ++x << " ";
cout << x++ << " ";
cout << x++ << endl;
您的问题的解决方案是:
Never write code这导致不明确的行为! :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)