私は数日前に cout がバッファを持っていることを知っています。ググると、バッファはスタックのようなもので、cout と printf の出力を右から左に取得し、(コンソールまたはファイルに)出力すると言われています。 )上から下へ。このような、
a = 1; b = 2; c = 3;
cout<<a<<b<<c<<endl;
buffer:|3|2|1|<- (take “<-” as a poniter)
output:|3|2|<- (output 1)
|3|<- (output 2)
|<- (output 3)
次に、以下のコードを記述します。
#include <iostream>
using namespace std;
int c = 6;
int f()
{
c+=1;
return c;
}
int main()
{
int i = 0;
cout <<"i="<<i<<" i++="<<i++<<" i--="<<i--<<endl;
i = 0;
printf("i=%d i++=%d i--=%d\n" , i , i++ ,i-- );
cout<<f()<<" "<<f()<<" "<<f()<<endl;
c = 6;
printf("%d %d %d\n" , f() , f() ,f() );
system("pause");
return 0;
}
VS2005では、出力は
i=0 i++=-1 i--=0
i=0 i++=-1 i--=0
9 8 7
9 8 7
スタックのやり方は合ってるみたいですね〜 ただ、昨日C++ Primer Plusを読んでみると、coutは左から右に動き、毎回オブジェクト(cout)を返すって書いてあったので、「それが出力を連結できる機能です」挿入」を使用して。しかし、左から右への方法では説明できません cout<
するとAlnitakは、「<< 演算子は実際には ostream& operator<<(ostream& os, int) であるため、別の書き方では次のようになります: operator<< ( operator<< ( operator<< ( cout, a ), b ), c)",
右端の引数が最初に評価される場合、それはある程度説明できます。
cout のバッファの仕組みについて混乱しています。誰か助けてもらえますか?