Je sais que cout et printf ont un tampon aujourd'hui, et il est dit que le tampon est comme une pile et obtient la sortie de cout et printf de droite à gauche, puis les éteindre (à la console ou au fichier) de haut en bas. Comme cela,le tampon et la séquence de sortie de cout et 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)
J'écrire un code ci-dessous,
#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;
}
Sous VS2005, la sortie est
i=0 i++=-1 i--=0
i=0 i++=-1 i--=0
9 8 7
9 8 7
Sous g ++ ((GCC) 3.4.2 (MinGW-spéciale)), la sortie est,
i=0 i++=0 i--=1
i=0 i++=-1 i--=0
9 8 7
9 8 7
Il semble que le b uffer est comme une pile. Cependant, j'ai lu C++ Primer Plus aujourd'hui, et il est dit que le cout fonctionne de gauche à droite, chaque fois retourner un objet (cout), donc "C'est la fonctionnalité qui vous permet de concaténer la sortie en utilisant l'insertion". Mais la façon de gauche à droite ne peut pas expliquer cout < sortie 9 8 7 Maintenant, je suis confus au sujet du fonctionnement du tampon de cout, quelqu'un peut-il m'aider?
Salut, Alnitak, J'ai une question que je pense que le tampon de Cout obtenir la sortie de droite à gauche, puis les sortir de droite à gauche, aussi. Mais je pense que dans votre code, le tampon cout obtient la sortie de gauche à droite, est-ce vrai? Merci ~ – lucas
Et dans le g ++, le cout << "i =" << i << "i ++ =" << i ++ << "i - =" << i - << endl; sortie i = 0 i ++ = 0 i - = 1 mais dans le VS2005, il sort i = 0 i ++ = - 1 i - = 0 Pouvez-vous expliquer cela? – lucas
Je ne peux pas expliquer la différence, mais je suis confiant sur l'imbrication gauche-droite que j'ai montrée. La fonction est ostream & operator << (ostream &,) donc il doit s'emboîter de cette façon. –
Alnitak