手机
当前位置:查字典教程网 >编程开发 >C语言 >浅析C++中cout的运行机制
浅析C++中cout的运行机制
摘要:复制代码代码如下:#includeusingnamespacestd;inthello1();inthello2();intmain(){i...

复制代码 代码如下:

#include <iostream>

using namespace std;

int hello1();

int hello2();

int main()

{

int a, b;

cout<<"a="<<hello1()<<" b="<<hello2()<<endl;

return 0;}

int hello1()

{

cout<<"hello1"<<endl;

return 1;

}

int hello2()

{

cout<<"hello2"<<endl;

return 2;

}

最终输出是:

hello2

hello1

a=1 b=2

一时让人有点难以琢磨,网上给出了其靠谱的解释:cout流的操作顺序是:先从右往左读入缓冲区,然后再从左往右输出。所以它从右边往左读的时候,碰到了函数当然去执行函数先了,然后把函数返回值读入缓冲区再然后。。。就是从左输出了。

根据这个解释,有实验的几个程序,能加深点理解

程序1:

复制代码 代码如下:

#include <iostream>

using namespace std;

int main()

{

int b[2]={1,2};

int *a=b;

cout<<*a<<" "<<*(a++)<<endl;

return 0;

}

输为出:2 1。

解释:先读入*(a++),对于a++,是先读入缓冲区,其自增,所以,此时缓冲区中的a是1,。再读入*a,此时a已自增,所以读入缓冲区的是2.

程序2:

复制代码 代码如下:

#include <iostream>

using namespace std;

int main()

{

int i=5;

cout<<i<<" "<<(i++)<<" "<<(++i)<<endl;

return 0;

}

输出为:7 6 6

解释:从右往左,先是(++i),即先自增,再读入缓冲区,为6。再是(i++),即先读入缓冲区,为6,再自增。最后是i,读入缓冲区为7.

【浅析C++中cout的运行机制】相关文章:

深入C++中struct与class的区别分析

深入C++中API的问题详解

浅析C语言字中的符串格式化显示

解析static在C和C++中的用法以及区别

深入分析C++中类的大小

深入解析C中的数值与真假

浅析C/C++中被人误解的SIZEOF

浅析C语言中assert的用法

深入分析C++中deque的使用

C++中const的用法详细总结

精品推荐
分类导航