关于C++输出流cout的执行顺序问题
来源:互联网 发布:pc架子鼓软件下载 编辑:程序博客网 时间:2024/05/29 21:29
首先看一个例子:
int fun1()
{
}
int fun2()
{
}
int main()
{
}
输出结果是
num2
num1
1
为什么呢?为什么不是num11num22呢?这里涉及到cout输出流的执行顺序问题。
cout的输出顺序有如下规律:
计算顺序:自右至左
输出顺序:自左至右
cout作为输出流,有一个缓冲区,先从右往左将输出读入缓冲区,在从缓冲区中读出(类似堆栈)
假设a = 1; b = 2; c = 3;
cout<<a<<b<<c<<endl;
缓冲区:|3|2|1|<-
输出:|3|2|<-
结果就是123.
在一开始的例子中,从右往左读入,先执行fun2(),输出num2,并将返回值2保存进缓冲区,再执行fun1(),输出num1,并将返回值1保存进缓冲区。最后开始读取缓冲区中的内容,输出1 2。
网上也有人质疑这种想法,但是这种想法很好的解释了出现的现象,暂且认为这是对的吧。
0 0
- 关于C++输出流cout的执行顺序问题
- C++输出流cout的执行顺序问题
- 关于cout执行顺序的问题
- cout输出流的执行顺序
- cout输出流的执行顺序
- C++输出流cout的顺序问题
- cout的输出流顺序
- cout中表达式的先后执行顺序与输出顺序
- cout的输出顺序
- 关于cout中连续i++的执行顺序
- cout输出中多个表达式的先后执行顺序与输出顺序
- 谈谈cout的执行顺序
- 为什么 printf 和 cout 的输出顺序有问题呢??
- cout的输出顺序与其中表达式的执行顺序,以及自增操作优先级
- C/C++中printf、cout输出顺序
- 关于该语句“cout <<"被挤出来的是" <<squeeze(number,size,temp) <<endl”的输出顺序问题
- 关于cout和printf的压栈顺序问题
- 关于cout和printf的压栈顺序问题
- 如何隐藏某一行的cell呢
- Ubuntu SSH证书配置
- c代码规范(参考)
- 英语美文10_23
- Oracle GoldenGate Oracle—Oracle 双向复制
- 关于C++输出流cout的执行顺序问题
- WSGI接口 def application(environ, start_response):
- hdu 5071 chat
- window与linux文件传输工具
- chmod函数的使用
- HTTP请求报头 .
- 使用Bmob后台的两个错误
- Phalcon学习笔记 - 安装
- 主机固定IP,虚拟Windows server2008无法联网解决办法