为什么这个片段:
int i = 0;
cout << ++i << " " << ++i;
产生2 2
而不是1 2
?
编辑:指向关于未定义评估顺序的答案的指针对我来说并不能解决这个问题。如果cout << ++i << " " << ++i
被翻译成f (++i, " ", ++i)
似乎只有2个相关案例:
- 第一个参数在第三个参数之前评估:
f (0, " ", 1)
- 第三个参数在第一个参数之前评估:
f (1, " ", 0)
2 2
来自哪里?
编辑:好的,我明白了:“在前一个序列点和下一个序列点之间,对象的存储值最多只能通过表达式的评估修改一次”。