0

当我在单个表达式中打印流的 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

1 回答 1

0

xalloc这与;无关 任何其他每次调用时返回不同值的函数都会做同样的事情。参数的评估顺序未指定;编译器可以按任意顺序调用这三个函数。一旦评估了所有参数,插入的顺序就是从左到右。

于 2013-06-28T16:19:25.893 回答