Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 预减量运算符_C++_Operators - Fatal编程技术网

C++ 预减量运算符

C++ 预减量运算符,c++,operators,C++,Operators,我的问题与调用函数以及减量运算符有关。 下面代码的答案是 20 1 19 10 我的问题是在“-m”之后,m应该是19,所以它应该发送19,最后19应该是打印输出 19 1 19 10 但为什么即使有“m”,m也不会改变呢 void f(整数a,双精度b){CUT这是不指定的行为。C++不表示参数的评价顺序。 < P>这是不指定的行为。C++不陈述参数的评价顺序。< /P>在C++中没有指定参数的评估顺序。使用调试器并通过代码,观察变量的值。所以,这是解决这类问题的最好方法,尝试一步一步地完成像

我的问题与调用函数以及减量运算符有关。 下面代码的答案是 20 1 19 10 我的问题是在“-m”之后,m应该是19,所以它应该发送19,最后19应该是打印输出 19 1 19 10 但为什么即使有“m”,m也不会改变呢


void f(整数a,双精度b){CUT

这是不指定的行为。C++不表示参数的评价顺序。

< P>这是不指定的行为。C++不陈述参数的评价顺序。< /P>在C++中没有指定参数的评估顺序。使用调试器并通过代码,观察变量的值。所以,这是解决这类问题的最好方法,尝试一步一步地完成像你这样愚蠢的代码本身就是一种宝贵的教育经验。这种愚蠢的代码是在以前的考试中给出的,我已经知道输出,但是正在显示的输出与我的概念不匹配--m、 如果你没有答案,请不要批评这个问题Thanks@KenWhite在这种情况下,调试器不会有帮助:它可能以某种方式在一个编译器上工作,但在另一个编译器(或编译器的未来版本)上产生不同的结果因此,不管调试器如何,都不能指望这个行为,它应该在生产代码中避免。@克里斯多夫:是的,我希望调试它的尝试会教这张海报写这样的代码的陷阱。在C++中没有指定参数的评估顺序。使用调试器并通过代码,查看值。变量。这是解决这类问题的最佳方法,尝试一步一步地完成像您在这里所做的愚蠢编写的代码本身就是一种宝贵的教育经验。这种愚蠢编写的代码是以前在考试中给出的,我已经知道输出,但显示的输出不匹配如果你没有答案,请不要批评这个问题Thanks@KenWhite在这种情况下,调试器不会有帮助:它可能以某种方式在一个编译器上工作,但在另一个编译器(或编译器的未来版本)上产生不同的结果。因此,不管调试器是什么,你都不能指望这种行为,在生产代码中应该避免这种行为。@Christophe:是的,我希望尝试调试这种行为可以让这张海报了解编写这种代码的陷阱。不同的编译器实际上会以不同的顺序计算参数,因此不同的编译器会得到不同的结果不同的编译器实际上会以不同的顺序计算参数,所以使用不同的编译器会得到不同的结果。
void f(int a, double b){cout<< a--<< '\t'<< b<< endl;}

int g(double x, int y){ return (x / ++y);}

int main()
{

int m = 20, n = 10;

f(m, g(--m, n));

cout<< m<< '\t'<< n << endl;

return 0;

}