1.printf/cout在同一個語句中都是從右向左計算的。
看如下的代碼:
1 #include <stdio.h> 2 int main() 3 { 4 int i=0; 5 printf("%d %d",i++,i++); 6 printf(" %d",i++); 7 return 0; 8 }
輸出結果:
1 0 2
(第5行,先計算右邊的i++,再計算左邊的i++。所以輸出時1 0)
2.printf/cout 有行緩沖區
直到緩沖區滿,或者遇到換行符,或者程序結束,或者刷新緩存,才進行輸出。
C使用fflush(stdout)刷新緩沖區;C++中使用cout.flush()刷新緩沖區。
看如下的代碼:
1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 int i=0; 6 cout<<i++<<","<<i++; 7 //cout.flush(); //刷新緩沖區 8 while(1){ 9 //break; 10 } 11 return 0; 12 }
執行程序(linux):
沒有任何輸出,因為沒有遇到換行符、程序也沒有結束。
把第7行的注釋取消掉,進行刷新緩沖區就可以看到執行結果:
1 0
參考鏈接:
http://hi.baidu.com/wjtk007/item/5eb65c03c0dd97066c9048c7