之前排序:不同函数的参数顺序

时间:2015-06-01 00:16:30

标签: c++

#include <iostream>

using namespace std;

int f(int){cout << "f ";return 0;}
int g(int){cout << "g ";return 0;}
int a(){cout << "a ";return 0;}
int b(){cout << "b ";return 0;}

int main()
{
    f(a()) + g(b());
    return 0;
}

我知道a在f之前测序,b在g之前测序。 f和g没有排序。

有多少结果?

1.a f b g

2.b g a f

可能发生示例1和2。这些怎么样?

  1. a b f g

  2. a b g f

  3. b a f g

  4. b a g f

  5. 可能还是不可能?

1 个答案:

答案 0 :(得分:2)

唯一保证的是b()将在g()之前评估,而a()将在f()之前评估。这是唯一遵守的2个有序关系。因此,任何与此排序兼容的输出都是可能的。在您的情况下,这意味着可能会发生1到6的任何输出。