#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/

10-12 23:57