#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;
}
Run Code Online (Sandbox Code Playgroud)
我们预计程序打印"x是7 \ny是6 \ni是5"
但程序打印"x是6 \ny是7 \ni是5"
Pra*_*rav 11
f(i--,i-- );调用未定义的行为.不要写这样的代码.
编辑:
,以上表达式中出现的逗号不是Comma operator.它只是一个分隔参数的分隔符(它不是一个序列点.)
此外,函数参数的求值顺序是Unspecified,但表达式调用Undefined Behavior,因为您试图i在两个序列点之间修改两次.
我很累.:(