关于一个c++的问题

来源:百度知道 编辑:UC知道 时间:2024/05/14 19:30:42
m=1;
cout<<m++<<m++<<endl;
输出的结果是2 1;
而cout<<m++<<endl;
cout<<m++<<endl;输出的是1 2;
望知道的人解释下第一种的原因,谢谢!!
cout<<++m<<++m<<endl;为什么是3 3.。。。。
我用的是visual studio 2008

先输出右边的m,再把m+1
然后输出此时左边的m (此时m = 2),再把m+1

=======================

哈,我答了等于没答?

他问的不是这个吗?

<<运算符的结合性确实是从右至左。

从右往左读入,再从左往右输出.
比如 a=1 b=2 c=3
读入顺序 从右到左
3 2 1
输出时 再反一下
1 2 3
结果你看到的就是1 2 3
m++ m++ 从右往左就是1 2 然后输出就是2 1了

这个取决于编译器. . 不同编辑器顺序不一样

同意supersunkaiyua的说法,因为在我计算机上输出的都是1 2,没有输出2 1,
只与计算机有关或者是编译器!

我在vc2008上运行
int m=1;
cout<<m++<<m++<<endl;
输出结果是1 1

如果结果像你说的那样,只有一种可能:那就是cout<<m++<<m++<<endl是从右向左结合运算的。