私はcoutとprintfが現在バッファを持っていることを知っています。バッファはスタックのようなもので、右から左へcoutとprintfの出力を得て、 (コンソールまたはファイルへ)をトップからボトムに移動します。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)
は、その後、私はVS2005下
#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;
}
、以下のコードを記述し、このように、出力は++ G下((GCC)3.4.2(MinGWの特殊
i=0 i++=-1 i--=0
i=0 i++=-1 i--=0
9 8 7
9 8 7
あります))、出力は、
i=0 i++=0 i--=1
i=0 i++=-1 i--=0
9 8 7
9 8 7
bうーんはスタックのようなものです。しかし、私はC++ Primer Plusを今日読んでおり、左から右に向かって、常にオブジェクト(cout)を返すと言われています。「これは、挿入を使って出力を連結できる機能です。しかし、左から右に向かって説明することはできません<出力9 8 7 今、私は傷のバッファがどのように働いているのか、誰か助けてくれますか?
こんにちは、Alnitak、私は訂正バッファーが右から左に出力を得て、それから右から左に出すと思うという質問があります。しかし、私はあなたのコードでは、耳のバッファーは左から右に出力を得ると思う、それは本当ですか?ありがとう〜 – lucas
g ++では、cout << "i =" << i << "i ++ =" << i ++ << "i - =" << i - << endl;出力 i = 0 i ++ = 0 i - = 1 vs2005では、出力は i = 0 i ++ = - 1 i - = 0 これを説明できますか? – lucas
違いを説明することはできませんが、私が示した左から右の入れ子には自信があります。この関数はostream&operator <<(ostream&、)ですので、そのようにネストする必要があります。 –
Alnitak