【发布时间】:2013-06-28 15:56:03
【问题描述】:
当我在单个表达式中打印流的 id 时,它会向后打印它。通常是这样的:
std::stringstream ss;
std::cout << ss.xalloc() << '\n';
std::cout << ss.xalloc() << '\n';
std::cout << ss.xalloc();
输出是:
4
5
6
但是当我在一个表达式中执行它时,它会向后打印,为什么?
std::stringstream ss;
std::cout << ss.xalloc() << '\n'
<< ss.xalloc() << '\n'
<< ss.xalloc();
输出:
6
5
4
我知道评估的顺序是未指定的,但是为什么以下总是导致正确的顺序:
std::cout << 4 << 5 << 6;
有人可以解释为什么xalloc 的行为不同吗?谢谢。
【问题讨论】:
-
您无法观察到评估
4、5和6的顺序 - 只能看到它们传递给cout的顺序。您可以观察三个ss.xalloc()表达式的求值顺序。