나는 cout과 printf가 현재 버퍼를 가지고 있고, 버퍼가 스택과 같다고 생각하고, 오른쪽에서 왼쪽으로 cout과 printf의 결과를 얻는다. (콘솔 또는 파일에) 상단에서 bottem으로. 이처럼버퍼와 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에서
i=0 i++=-1 i--=0
i=0 i++=-1 i--=0
9 8 7
9 8 7
++ ((GCC) 3.4.2 (와 Mingw-특별하다)), 출력은
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, 내가 생각하는 큐 아웃 버퍼가 오른쪽에서 왼쪽으로 출력을 얻은 다음 오른쪽에서 왼쪽으로 넣을 것입니다. 하지만 당신의 코드에서, cout 버퍼가 왼쪽에서 오른쪽으로 결과를 얻는다 고 생각합니다. 사실입니까? 감사합니다 ~ – 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