淺析C++中cout的運轉機制。本站提示廣大學習愛好者:(淺析C++中cout的運轉機制)文章只能為提供參考,不一定能成為您想要的結果。以下是淺析C++中cout的運轉機制正文
#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.