#include <iostream>
using namespace std;
void f(int x, int y){
cout << "x is " << x << endl;
cout << "y is " << y << endl;
}
int main(){
int i = 7;
f(i--,i-- );
cout << i << endl<< endl;
}
我们希望程序打印“x为7\n y为6\n我为5”
但程序显示“x为6\n y为7\n我为5”
最佳答案
f(i--,i-- );
调用Undefined Behaviour。不要写这样的代码。
编辑:
以上表达式中出现的逗号,
不是Comma operator
。它只是分隔参数的分隔符(不是顺序点。)
此外,函数自变量的求值顺序是不确定的,但表达式会调用“未定义行为”,因为您试图在两个序列点之间两次修改i
。
ff,我很累。 :(
关于c++ - post和pre递增,c递减,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3793535/