C C 中cout和printf的執行機制

2021-06-26 06:46:29 字數 1470 閱讀 5901

在進行分析之前先看乙個例子:

例子1:

#include #include using namespace std;

static int x=3;

int foo1()

{ x+=2;

cout<<"the first value of x is:"《例子2:

#include #include using namespace std;

static int x=3;

int foo1()

{ x+=2;

cout<<"the first value of x is:"《觀察例子1和例子2,唯一的不同就是cout輸出foo1和foo2的值;這兩個例子體現了cout和printf輸出的執行機制,首先先看下這兩個例子的輸出:

//例子1輸出:

/*cout the value: i=0 i++=-1 i--=0

printf the value: i= 0, i++= -1, i--= 0

the case 1:

the first value of x is:5

the value of foo1: 5

the second value of x is:7

the value of foo2: 7

*///例子2輸出:

/*cout the value: i=0 i++=-1 i--=0

printf the value: i= 0, i++= -1, i--= 0

the case 2:

the second value of x is: 5

the first value of x is: 7

the value of foo1: 7 the value of foo2: 5

*//*

從兩個例子的輸出可以看出foo1和foo2輸出不同,下面將對cout和printf的輸出機制進行分析,進行解釋printf和cout的輸出問題。

*/

在c/c++中,cout和printf的機制是先從右往左讀入緩衝區,然後再從左往右輸出;

#include using namespace std;

int main()

{ int a = 7;

int b = 6;

int c =5;

cout<<"a= "《有了對cout和printf輸出機制的了解,我們就可以分析上面例子的輸出的結果:

//注:x是static變數,初始值x=3;

int i = 0;

cout<<"cout the value: "<<"i="《最後給出乙個例子:

#include using namespace std;

int foo()

{ static int x =3;

x+=2;

cout<<"the value of x is:"<

C 中cout與printf的區別

cout輸出原理 1 使用過載 根據輸出內容的型別來過載不同型別的函式,所以可以輸出包括自定義型別在內的多種型別。舉個例子 在cout中,相當於有很多cout的同名函式,但它們有不同型別的引數 如int float char等,當 輸出內容 為char型別時,呼叫引數為char的cout函式 2 開...

C 中cout與printf區別

vc環境c 測試乙個判斷系統是大小端的程式時候遇到了問題,如下 加入了改正後的cout與printf對比 include include using namespace std union endian void main 所以沒有特殊要求,請不要混用iostream和stdio。尤其是如果你的程式...

printf和cout右向左求值

p 等價於 p p 1也就是b的值變成3 函式的壓棧順序是從右到左的 當 p 入棧時,編譯器做了如下操作 先為 p 建立乙個臨時變數 b,並做賦值操作,b p 可想而知此時 b的值是 p 也就是2,賦值後 p做了自增操作 p p 1 所以在printf d d n p,p 中的 p入棧時 p已經變成...