请参阅以下代码:
#include<bits/stdc++.h>
using namespace std;
int read(){
int a;
scanf("%d", &a);
return a;
}
void print(int a, int b){
printf("%d %d", a, b);
}
int main(){
print(read(), read());
}
输出的结果转换了数字的顺序,它不是C ++调用函数操作&#39;,&#39;后面?
答案 0 :(得分:0)
通常,在C ++中,子表达式的评估顺序为unspecified。查看链接以获取更多讨论以及一些特殊情况。
C ++标准说:
除非另有说明,否则评估各个运营商的操作数 个别表达的子表达式没有序列。[...]
编译器可以根据效率或其他一些考虑因素来决定首先评估print
(在您的示例中)的哪个参数。你应该从不依赖订单。