Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;函数调用_C++_Operator Precedence - Fatal编程技术网

C++ C++;函数调用

C++ C++;函数调用,c++,operator-precedence,C++,Operator Precedence,下面是示例代码 #include "stdafx.h" #include <iostream> int func_A(); int func_B(); void func_C(int a, int b); int main() { func_C(func_A(), func_B()); return 0; } int func_A() { std::cout << "in Function A" << std::endl;

下面是示例代码

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

int func_A();
int func_B();
void func_C(int a, int b);


int main()
{
    func_C(func_A(), func_B());
    return 0;
}

int func_A()
{
    std::cout << "in Function A" << std::endl;
    return 1;
}

int func_B()
{
    std::cout << "in Function B" << std::endl;
    return 2;
}

void func_C(int x, int y)
{
    std::cout << x + y;
}
#包括“stdafx.h”
#包括
int func_A();
int func_B();
无效函数C(int a,int b);
int main()
{
func_C(func_A(),func_B());
返回0;
}
int func_A()
{

std::coutC++标准规定,无法保证函数调用参数中的哪一条语句将首先执行。这由编译器的优化器决定。因此,您不应该依赖它

即使在两个不同的调用中,它也可能是不同的。此外,如果您现在编译代码,并且它按照您的预期工作,那么不能保证它在同一编译器的下一个版本或下一个版本中也能工作


但正如Martin在评论中提到的:“另一方面,C规定了评估的顺序”

…在两个不同的调用中,它不必是相同的顺序。另一方面,C规定了评估的顺序(我个人认为C的设计在这里更好)。保留未指定的顺序允许更快的代码,例如,可以按照调用约定的相同顺序调用函数,从而将其返回值推送到堆栈上,而不必将其存储在特定位置。因此,必须避免使用
函数(a[p++],a[p++],a[p++])