C++輸出流cout的執行順序問題
首先看一個例子:
int fun1()
{
cout<<"num1"<<endl;
return 1;
}
int fun2()
{
cout<<"num2"<<endl;
return 2;
}
int main()
{
cout<<fun1()<<" "<<fun2()<<endl;
return 0;
}
輸出結果是
num2
num1
1 2
為什麼呢?為什麼不是num11num22呢?這裡涉及到cout輸出流的執行順序問題。
cout的輸出順序有如下規律:
計算順序:自右至左
輸出順序:自左至右
cout作為輸出流,有一個緩衝區,先從右往左將輸出讀入緩衝區,在從緩衝區中讀出(類似堆疊)
假設a = 1; b = 2; c = 3;
cout<<a<<b<<c<<endl;
緩衝區:|3|2|1|<- (把“<-”看作是指標)
輸出:|3|2|<- (輸出 1)
|3|<- (輸出 2)
|<- (輸出 3)
結果就是123.
在一開始的例子中,從右往左讀入,先執行fun2(),輸出num2,並將返回值2儲存進緩衝區,再執行fun1(),輸出num1,並將返回值1儲存進緩衝區。最後開始讀取緩衝區中的內容,輸出1 2。
https://blog.csdn.net/gao1440156051/article/details/51332052
相關文章
- SQL語句中的AND和OR執行順序問題SQL
- C++ cout列印輸出 (解決輸出亂碼)C++
- SQL中rownum和order by的執行順序的問題SQL
- C++輸入輸出常用格式(cin,cout,stringstream)C++
- GROUPBY 和開窗函式執行順序的問題函式
- 22道js輸出順序問題,你能做出幾道JS
- pipeline的執行順序
- js基礎進階–promise和setTimeout執行順序的問題JSPromise
- Sql執行順序SQL
- join方法應用之一——按順序輸出三個執行緒執行緒
- Spring Aop的執行順序Spring
- 請寫出:link、:visited、:hover、:active的執行順序
- JavaScript執行順序分析JavaScript
- mySQL 執行語句執行順序MySql
- 演算法題———————輸入棧的入棧順序和出棧順序判斷是否合理演算法
- SQL 語句的執行順序SQL
- mysql 語句的執行順序MySql
- 關於 Promise 的執行順序Promise
- Python執行緒專題10:queue、多執行緒按順序執行Python執行緒
- 聊聊如何讓springboot攔截器的執行順序按我們想要的順序執行Spring Boot
- gson改變輸出欄位的順序
- C++ 順序容器中訪問元素C++
- Jetpack Compose的Modifier順序問題Jetpack
- SQL語句執行順序SQL
- Select語句執行順序
- js執行順序Event LoopJSOOP
- sql mysql 執行順序 (4)MySql
- 執行緒間的協作(3)——管道輸入/輸出流執行緒
- 路由的中介軟體執行順序路由
- python pandasDataframe按指定index名或columns名(行名或列名)順序修改輸出內容的排列順序PythonIndex
- linux 中實現資料按照指定行號順序輸出Linux
- Pytest 順序執行,依賴執行,引數化執行
- async await、Promise、setTimeout執行順序AIPromise
- js解惑-函式執行順序JS函式
- [20191215]seq控制執行順序.txt
- sql select語法執行順序SQL
- 令人費解的 async/await 執行順序AI
- SQL語句各子句的執行順序SQL