關於C 輸出流cout的執行順序問題

2021-06-26 12:38:22 字數 715 閱讀 8478

首先看乙個例子:

int fun1()

int fun2()

int main()

輸出結果是

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。

網上也有人質疑這種想法,但是這種想法很好的解釋了出現的現象,暫且認為這是對的吧。

C 輸出流cout的執行順序問題

首先看乙個例子 int fun1 int fun2 int main 輸出結果是 num2 num1 1 2 為什麼呢?為什麼不是num11num22呢?這裡涉及到cout輸出流的執行順序問題。cout的輸出順序有如下規律 計算順序 自右至左 輸出順序 自左至右 cout作為輸出流,有乙個緩衝區,先...

C 中cout流的輸出順序

先來看一段 includeusing namespace std int hello1 int hello2 int main int hello1 int hello2 我第一次看到這段 認為輸出的順序就是 a hello1 b hello2 但是真正的執行結果呢,我們來看看 hello2 hel...

C 輸出流cout方法

輸出指定字數的字串。basic ostream write const char type s,streamsize n 1 write遇到空字元時不會停止 2 即使超出邊界,write仍繼續列印 3 可用於資料資料 需將數值資料強制轉換為char 計數制函式 十進位制 十六進製制 八進位制 調整字...