简单c++ cout<< 语句输出问题
#includ<iostream>usingnamespacestd;voidmain(){intx(0);cout<<x++<<endl<<x++<<endl<<x++...
#includ<iostream>
using namespace std;
void main()
{
int x(0);
cout<<x++<<endl<<x++<<endl<<x++<<endl<<x++<<endl;
cout<<x<<endl;
}
源码如上。。为什么输出会是 :
3
2
1
0
4
望高手解答,先在此谢谢各位了 展开
using namespace std;
void main()
{
int x(0);
cout<<x++<<endl<<x++<<endl<<x++<<endl<<x++<<endl;
cout<<x<<endl;
}
源码如上。。为什么输出会是 :
3
2
1
0
4
望高手解答,先在此谢谢各位了 展开
4个回答
展开全部
你好!
1. 你的问题,第一行头文件中include缺少了字母e。(细心,哈哈哈)
2.正如上位仁兄所说,这个问题确实对于不同的编译器,结果很难预料,所以,专业人员大都不会写出很难读懂,并且不知道程序怎样运行的程序。
以上源码在我的Dev-C++5中编译运行显示输出为:
0
1
2
3
4
3,最后解答你的问题:首先你要明白输出流“<<”的概念,输出cout对应的流运算是从右向左进行的,将要输出的内容输入至缓冲区,遇到endl才一次输出。换句话说:cout流先进行了四次自加运算,然后从最右边的X向左边的X输出,而输出时,更麻烦,解释如下:
首先对cout中的四个X从左向右编号,第一个X=0,执行第一个自加运算,第二个X=1,执行第二个自加,第三个X=2,执行第三个自加,第四个X=3,执行第四个自加,此时X=4.
下面输出,根据流的运算,从右边向左输出,输出第四个X=3,换行;输出第三个X=2,换行……故而输出:3
2
1
0
最后执行第二个输出流,输出X=4.
祝你好运!!
都是C++之路上摸爬滚打的难兄难弟,不要你的财富值,给个好评总行吧??O(∩_∩)O哈哈哈~
1. 你的问题,第一行头文件中include缺少了字母e。(细心,哈哈哈)
2.正如上位仁兄所说,这个问题确实对于不同的编译器,结果很难预料,所以,专业人员大都不会写出很难读懂,并且不知道程序怎样运行的程序。
以上源码在我的Dev-C++5中编译运行显示输出为:
0
1
2
3
4
3,最后解答你的问题:首先你要明白输出流“<<”的概念,输出cout对应的流运算是从右向左进行的,将要输出的内容输入至缓冲区,遇到endl才一次输出。换句话说:cout流先进行了四次自加运算,然后从最右边的X向左边的X输出,而输出时,更麻烦,解释如下:
首先对cout中的四个X从左向右编号,第一个X=0,执行第一个自加运算,第二个X=1,执行第二个自加,第三个X=2,执行第三个自加,第四个X=3,执行第四个自加,此时X=4.
下面输出,根据流的运算,从右边向左输出,输出第四个X=3,换行;输出第三个X=2,换行……故而输出:3
2
1
0
最后执行第二个输出流,输出X=4.
祝你好运!!
都是C++之路上摸爬滚打的难兄难弟,不要你的财富值,给个好评总行吧??O(∩_∩)O哈哈哈~
展开全部
这个我试过,在一个cout语句中,是从右到左边执行的。所以在输出第一个x的时候x++已经执行了3次,然后输出第二个x的时候x++已经执行了两次。后面的同理。而第二个cout跟第一个不是一条语句,要等前面一条cout语句执行完才会执行这一条。在这之前已经执行了4次x++。所以这个时候x已经为4了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
x++;是在编译的时候就算过了,而在编译的时候是从右到左编译,所以第一个x++其实已经算了三次了,第二个算了两次,第三个算了一次,第四个没有算!所以第一个cout语句输出是
3
2
1
0
下一个cout语句是在上一个cout语句便已结束之后,再编译的,所以是执行了四次,所以输出4,就是这样了!
3
2
1
0
下一个cout语句是在上一个cout语句便已结束之后,再编译的,所以是执行了四次,所以输出4,就是这样了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个问题其实没有什么意义,因为在不同的编译器下的输出不一样
所以最好不要在同一条语句内出现两次对一个变量的自增或自减,会造成误解。
所以最好不要在同一条语句内出现两次对一个变量的自增或自减,会造成误解。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询