C++中输入、输出用的是cin、cout,对应的有输入输出缓冲区,cin、cout都是对缓冲区中的数据进行操作,那么看下面代码:
#include <iostream>
using namespace std;
int hello1();
int hello2();
int main()
{
int a, b;
cout << "a=" << hello1() << endl << "b=" << hello2() << endl;
return 0;
}
int hello1()
{
cout << "hello1" << endl;
return 1;
}
int hello2()
{
cout << "hello2" << endl;
return 2;
}
它的输出顺序是什么呢,会是
a=hello1
b=hello2
?
其实,实验之后,它的输出为
hello2
hello1
a=1
b=2
为什么呢?
因为cout输出时,先从右往左扫描,将数据读入缓冲区,然后再从左往右输出。所以,从右往左读取缓冲区的时候,先遇到函数hello2(),那么先执行函数,然后将函数的返回值作为数据读取缓冲区。
吐槽:C++ Primer Plus第27页,函数返回值为“有罪裁决”???
什么鬼,后来看原文发现应该是指的布尔类型吧,这个翻译也是醉了…