【发布时间】:2011-09-09 01:54:09
【问题描述】:
可能重复:
Compilers and argument order of evaluation in C++
cout << order of call to functions it prints?
-
这个:
int k=3; printf("%d %d %d",k++,k,++k);输出为
4 4 4,因为它们被推入堆栈:%d%d%d 4 -- for k++ 4 --for k 4 --for ++k对吗?
-
这个:
int k = 3; cout << k++ << k << ++k;其实是重复的函数调用,所以相当于:
( ( (cout << k++) << k) << ++k);所以,我想首先
k++然后k然后++k必须始终按此顺序执行,对吗?我相信函数调用是一个序列点,但输出因不同的实现而异。为什么会这样?
【问题讨论】: