为了表达
(func1() * func2()) + func3()
Run Code Online (Sandbox Code Playgroud)
将func1()*func2()首先计算,因为它有括号或可以按任何顺序调用函数
首先是func3()然后是(func1()*func2())
操作符的优先级与操作数的评估顺序无关.
C或C++标准不确定调用函数的顺序..
子表达式的评估顺序,包括
, +, -, =, * , /
),但以下情况除外:
&&
和||
),?:
)和,
)是未指定
例如
int Hello()
{
return printf("Hello"); /* printf() returns the number of
characters successfully printed by it
*/
}
int World()
{
return printf("World !");
}
int main()
{
int a = Hello() + World(); //might print Hello World! or World! Hello
/** ^
|
Functions can be called in either order
**/
return 0;
}
Run Code Online (Sandbox Code Playgroud)