轉載自:http://www.cnblogs.com/xudong-bupt/p/3653191.html
1.printf/cout在同一個語句中都是從右向左計算的。
看如下的代碼:
#include <stdio.h>
int main()
{
int i=0;
printf("%d %d",i++,i++);
printf(" %d",i++);
return 0;
}
輸出結果:
1 0 2
(第5行,先計算右邊的i++,再計算左邊的i++。所以輸出時1 0)
2.printf/cout 有行緩衝區
直到緩衝區滿,或者遇到換行符,或者程序結束,或者刷新緩存,才進行輸出。
C使用fflush(stdout)刷新緩衝區;C++中使用cout.flush()刷新緩衝區。
看如下的代碼:
#include <iostream>
using namespace std;
int main()
{
int i=0;
cout<<i++<<","<<i++;
//cout.flush(); //刷新緩衝區
while(1){
//break;
}
return 0;
}
執行程序(linux):
沒有任何輸出,因爲沒有遇到換行符、程序也沒有結束。
把第7行的註釋取消掉,進行刷新緩衝區就可以看到執行結果:
1 0