++x 和 x++ 如何在 C++

问题描述

我一直在尝试理解 ++x 和 x++ 的功能,但是当我觉得我已经弄清楚的那一刻,出现了一些新的东西,而这些新东西对以前的规则没有意义。

据我所知,在使用(++x)时,先将x的值加1,然后将new(x)的值赋给括号(++x)。 另一方面在使用(x++)时,首先将(x)的值赋给括号(x++),然后x本身的值加1。

例如我期望这段代码的输出:

int c=9;
int x=(++c)-c;
cout<<"c="<<c<<endl<<"x="<<x;

成为 c=10 x=0 ,就这样。

或者还有这个代码:

int c=9;
int x=(c++)-(++c);
cout<<"c="<<c<<endl<<"x="<<x;

输出 c=11 x=-2 ,这也很有意义,完全符合预期。

没有意义的是这段代码的输出:

int c=9;
int x=(++c)-(c++);
cout<<"c="<<c<<endl<<"x="<<x;

c=11 x=1,我预计它是 c=11 x=0。因为从左到右,首先c的值加1(即c=10),然后(++c)替换为c的新值(即10)。继续下一个括号,首先将 (c++) 替换为 c 的值(即 10),然后将 c 本身的值加 1,这意味着最后我们有 c=11 和 x=10 -10=0。

与此代码相同的问题:

int c=9;
int x=(++c)*(c++);
cout<<"c="<<c<<endl<<"x="<<x;

生成这个输出 c=11 x=110,这也没有意义(我预计它是 c=11 x=100,与之前的代码完全相同的逻辑)

还有最后一个,我不知道发生了什么:

int c=1;
int x=(++c)*(++c)*(++c);
cout<<"c="<<c<<endl<<"x="<<x;

输出为 c=4 x=36(我预计为 c=4 x=24)! 更有趣的是,如果我将第二行更改为 int x=2*(++c)*(++c)*(++c);,输出将更改为 c=4 x=48 !

如果有人能帮助我,我将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)