C++的cout的运行机制是怎么样的?为什么这段代码跑出来是767?
#include<iostream>
using namespace std;
int main()
{
int i = 5;
cout << i << (i++) << (++i) << endl;
return 0;
}
C++的cout的运行机制是怎么样的?为什么这段代码跑出来是767?
#include<iostream>
using namespace std;
int main()
{
int i = 5;
cout << i << (i++) << (++i) << endl;
return 0;
}
cout 函数类似一个栈,是从右往左扫描数据的
所以是从++i到i++再到i处理的
++i返回的是地址,i++返回的是数值
所以顺序是++i,i自增为6,输出缓冲区是|&i|;
i++,输出缓冲区为|&i||6|,i自增为7;
i,输出缓冲区为|&i||6||7|,栈是先进后出的,所以输出为767