这个:
int k=3;
printf("%d %d %d",k++,k,++k);
Run Code Online (Sandbox Code Playgroud)
提供输出,4 4 4因为它们被推入堆栈中:
%d%d%d
4 -- for k++
4 --for k
4 --for ++k
Run Code Online (Sandbox Code Playgroud)
对?
这个:
int k = 3;
cout << k++ << k << ++k;
Run Code Online (Sandbox Code Playgroud)
实际上是重复的函数调用,所以它相当于:
( ( (cout << k++) << k) << ++k);
Run Code Online (Sandbox Code Playgroud)
所以,我认为首先是k++再k然后++k必须按以下顺序执行的,对不对?我相信函数调用是一个序列点,但输出在不同的实现上有所不同.为什么会这样?