- 问答
- 2017-01-13 15:58:57 @
#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++调用函数时先运算","后面的?
好像有点不科学了啊啊啊=w=
2 条评论
-
scjyholy LV 7 @ 2017-01-13 23:31:22
一般来说,在C++中,子表达式的求值顺序是未指定的。你可以在这个链接中查看更多讨论以及一些特殊情况。
http://en.cppreference.com/w/cpp/language/eval_orderC++标准中是这么说的:
Except where noted, evaluations of operands of individual operators and of subexpressions of individual expressions are unsequenced.[...]
编译器可以根据效率或其它一些事项决定首先考虑哪个参数(例如在你的程序中),因此你不应该考虑程序固定的求值顺序。
-
2017-01-13 20:29:41@
表达式求值顺序是未定义的。
- 1