打印带有一个std :: cout和多个std :: cout的静态int的函数有什么区别?

时间:2018-06-27 02:23:41

标签: c++ static cout ostream operator-precedence

因此,当我具有此功能,并通过多条语句将其打印到控制台时,将获得预期的结果:

0

1

但是当我通过同一行上的一个cout语句打印出函数时,我得到:

3 2

(这是在先前打印的初始0和1之后)

为什么要向后打印?

#include "stdafx.h"
#include <iostream>

using namespace std;

int addOne()
{
    static int s_num = -1;
    return ++s_num;
}

int main()
{
    cout << addOne() << "\n";
    cout << addOne() << "\n";
    cout << addOne() << " " << addOne() << "\n";

    return 0;
}

1 个答案:

答案 0 :(得分:-1)

您实际上是在绊脚石。在这种情况下,以及在运算符具有相同优先级的任何其他此类情况下,可以按任何顺序评估函数调用。在这种情况下,编译器选择在第一个函数调用之前评估第二个函数调用,但是其他编译器可能会做不同的事情。