|
3驿站币
本帖最后由 Viming 于 2018-11-1 17:08 编辑
- #include <iostream>
- using namespace std;
- int main() {
- int k = 1;
- cout << "k = " << k << ", ++k = " << ++k << endl;
- int ks = 23;
- cout << "ks = " << ks << "," ;
- cout << " ++ks = " << ++ks << endl;
- return 0;
- }
复制代码
如上述代码,在windows的VS2015中执行,结果是
- k = 2, ++k = 2
- ks = 23, ++ks = 24
复制代码
在Linux下g++执行,结果是
- k = 1, ++k = 2
- ks = 23, ++ks = 24
复制代码
问题在于第一个k的值。在VS中同一行执行输出似乎结果是错误的,但分开是正确的,这是为什么呢? |
最佳答案
查看完整内容
cout 在不同编译器中输出的顺序应该都是从左到右,但是计算顺序可能是不太一样,VC++ 中是从右到做,gcc/g++中我之前没太注意过,按照楼主上面的测试结果,那么就说明 gcc/g++ 关于 cout 的计算顺序就是从左到右了。
所以,不管在vc++下,还是在 gcc/g++下都不建议这么写到一起,一方面阅读起来容易混淆,另外一方面对于计算的结果在不同的平台下也有不一样的结果。所以最好还是分开写,这样就没有分歧了!
上一篇: pMsg的wParam参数自动改变都问题下一篇: 请教一下大神
|