在進行分析之前先看乙個例子:
例子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已經變成...