因此,当我具有此功能,并通过多条语句将其打印到控制台时,将获得预期的结果:
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;
}
答案 0 :(得分:-1)
您实际上是在绊脚石。在这种情况下,以及在运算符具有相同优先级的任何其他此类情况下,可以按任何顺序评估函数调用。在这种情况下,编译器选择在第一个函数调用之前评估第二个函数调用,但是其他编译器可能会做不同的事情。