解释简单的c++程序输出结果.追加送20分

来源:百度知道 编辑:UC知道 时间:2024/06/22 07:18:10
在线等待回复,谢谢.
#include<iostream>
using namespace std;
void main()
{int i=0;
cout<<(i++)<<(i++)<<i;
i=0;
cout<<(i=i+1)<<(i=i+1)<<i;

}
请对结果做逐步的解释,就是i是怎么赋值的!
谢谢!麻烦了

感谢 狂爱编程_菜鸟 的提示,我已经知道为什么了,但是"最后一个i++不做"就不是很理解,不过没有关系了;
我始终不认为 兔弟蛇哥 说的这是垃圾 是对的,汗颜......

答案100210
本来给你打了很多,但是怕你迷糊
在不同的编程平台上,会有不同的结果
就几句话吧,前+后+优先级别不同
在C++中如果都是i++的话
cout<<i++<<i++;最后一个i++不做,等表达式结束后再加
然后从后往前打印

0 1 2
1 1 2
i++表示先调用i,再加1

我觉得应该是
012122
挂号运算副悠闲级最高,先进行计算

在VC++2005上运行的结果是002222
这种东西在不同的系统中会得到不同的值,垃圾题目,不必理会。

我也来提个问题:为什么会出现002222的结果?

附上教材上对自增自减运算的一段描述:
++和--是带有副作用的运算符,建议读者不要在一个表达式中对同一变量多次使用这样的运算符,否则可能会发生意想不到的结果。如i的值为4,对表达式
(i++)+(i++)
可能认为它的值为9(4+5)。然而,在TURBOC和MS C系统中,它的值为8。而表达式
(++i)+(++i)
的值为12。这是因为这些系统在处理i++时,现实用i的原值计算整个表达式,然后再让i连续两次自增;处理++i时,先对i执行两次自增,然后才计算表达式,……
类似情况还有在函数调用中,多个实参表达式的求值顺序,因从左到右与从右到左的不同,也会产生不同的结果。例如,设i的值为4,对函数调用
printf("%d %d",i,i++);
如参数表的求值顺序从左到右,则输出
4 4
反之,将输出:
5 4
因+与++是两个不同的运算符,对于类似表达式i+++j会有不同的理解:……

个人认为,这种题目没有任何意义。楼主对这个问题投入如此大的精力,说它是垃圾题目可能伤害了搂主的感情,在此表示歉意。
不过我还是认为事实就是如此,这是一道不折不扣的垃圾题目,做中学竞赛题倒是再合适不过了。