求解,关于C++运算符自加++与自减的问题

qq_40232848 2019-11-06 08:02:03

为什么不是-1??
求解答,谢谢了
...全文
96 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_40232848 2019-11-06
  • 打赏
  • 举报
回复
引用 15 楼 qq_40232848 的回复:
[quote=引用 14 楼 liups 的回复:] [quote=引用 13 楼 qq_40232848 的回复:] [quote=引用 6 楼 liups 的回复:] [quote=引用 4 楼 qq_40232848 的回复:] [quote=引用 1 楼 liups 的回复:] 请说一下老师如何讲的先
这个视频他讲解这个 num1 = (num2++) - (--num2); 我是这么理解的 num1 = 2-(-1+3),所以num=0; 但是我是对这个弹幕评论有点在意,num1 = num2++ - num2,我认为等于-1,结果在vs上是0,这个不懂;[/quote] 直接公布答案吧: 1、老师错了; 2、你也错了! 这种是未定义行为,就是标准没有规定,由编译器实现时自主决定。具体来说,运算哪个先,哪个后这个没有问题,是明确的(不清楚的自己分析)。重点在于:两个num2如何取值没有规定。本版也有很多讨论这种现象的(其他地方也多),请自行查找。 所以:我们不能这样写程序,非要实现这样的效果请拆分成两条语句。正确答案是:题目错了[/quote] 嗯嗯,这个我知道,写程序是根据自己所期望的目的来写的,取值也是根据那个变量的作用来取, 但视频这个代码只是一般的即兴写的,既然你说得这版块也有类似的问题,那我自己找找看吧! 在此先感谢您的解答,谢谢![/quote] 你还是没有明白我的意思! 假设你使用VC,可能得到了正确的(你想要的)结果。某天你换一个比如mingw或者单片机的keli什么的,你再用同样的写法,结果却可能出乎你的意料。 难道你希望发生这样的事情吗?[/quote] 那我先说说我平时编程过程吧,例如这个式子 A=B+C;这三个都是未知数,我会先定义好这三个变量的类型,如果他们有取值范围就定义范围;然后我先求出A,再求出B,最后再求出C,写这个加法,我会打三行代码,就像你说你的那样,拆分两条语句来写那样; 你刚刚提到编译器,应该就是我的这个问题所在了,keli,mingw等不同平台,它们的运行可能不一样,这个编译器 我刚在百度学习中,这个概念我需要理解一下 [/quote]BCA 噢,那个打错了,应该是 先求出B,再求出C,最后再求出A
qq_40232848 2019-11-06
  • 打赏
  • 举报
回复
引用 14 楼 liups 的回复:
[quote=引用 13 楼 qq_40232848 的回复:] [quote=引用 6 楼 liups 的回复:] [quote=引用 4 楼 qq_40232848 的回复:] [quote=引用 1 楼 liups 的回复:] 请说一下老师如何讲的先
这个视频他讲解这个 num1 = (num2++) - (--num2); 我是这么理解的 num1 = 2-(-1+3),所以num=0; 但是我是对这个弹幕评论有点在意,num1 = num2++ - num2,我认为等于-1,结果在vs上是0,这个不懂;[/quote] 直接公布答案吧: 1、老师错了; 2、你也错了! 这种是未定义行为,就是标准没有规定,由编译器实现时自主决定。具体来说,运算哪个先,哪个后这个没有问题,是明确的(不清楚的自己分析)。重点在于:两个num2如何取值没有规定。本版也有很多讨论这种现象的(其他地方也多),请自行查找。 所以:我们不能这样写程序,非要实现这样的效果请拆分成两条语句。正确答案是:题目错了[/quote] 嗯嗯,这个我知道,写程序是根据自己所期望的目的来写的,取值也是根据那个变量的作用来取, 但视频这个代码只是一般的即兴写的,既然你说得这版块也有类似的问题,那我自己找找看吧! 在此先感谢您的解答,谢谢![/quote] 你还是没有明白我的意思! 假设你使用VC,可能得到了正确的(你想要的)结果。某天你换一个比如mingw或者单片机的keli什么的,你再用同样的写法,结果却可能出乎你的意料。 难道你希望发生这样的事情吗?[/quote] 那我先说说我平时编程过程吧,例如这个式子 A=B+C;这三个都是未知数,我会先定义好这三个变量的类型,如果他们有取值范围就定义范围;然后我先求出A,再求出B,最后再求出C,写这个加法,我会打三行代码,就像你说你的那样,拆分两条语句来写那样; 你刚刚提到编译器,应该就是我的这个问题所在了,keli,mingw等不同平台,它们的运行可能不一样,这个编译器 我刚在百度学习中,这个概念我需要理解一下
liups 2019-11-06
  • 打赏
  • 举报
回复
引用 13 楼 qq_40232848 的回复:
[quote=引用 6 楼 liups 的回复:] [quote=引用 4 楼 qq_40232848 的回复:] [quote=引用 1 楼 liups 的回复:] 请说一下老师如何讲的先
这个视频他讲解这个 num1 = (num2++) - (--num2); 我是这么理解的 num1 = 2-(-1+3),所以num=0; 但是我是对这个弹幕评论有点在意,num1 = num2++ - num2,我认为等于-1,结果在vs上是0,这个不懂;[/quote] 直接公布答案吧: 1、老师错了; 2、你也错了! 这种是未定义行为,就是标准没有规定,由编译器实现时自主决定。具体来说,运算哪个先,哪个后这个没有问题,是明确的(不清楚的自己分析)。重点在于:两个num2如何取值没有规定。本版也有很多讨论这种现象的(其他地方也多),请自行查找。 所以:我们不能这样写程序,非要实现这样的效果请拆分成两条语句。正确答案是:题目错了[/quote] 嗯嗯,这个我知道,写程序是根据自己所期望的目的来写的,取值也是根据那个变量的作用来取, 但视频这个代码只是一般的即兴写的,既然你说得这版块也有类似的问题,那我自己找找看吧! 在此先感谢您的解答,谢谢![/quote] 你还是没有明白我的意思! 假设你使用VC,可能得到了正确的(你想要的)结果。某天你换一个比如mingw或者单片机的keli什么的,你再用同样的写法,结果却可能出乎你的意料。 难道你希望发生这样的事情吗?
qq_40232848 2019-11-06
  • 打赏
  • 举报
回复
引用 6 楼 liups 的回复:
[quote=引用 4 楼 qq_40232848 的回复:] [quote=引用 1 楼 liups 的回复:] 请说一下老师如何讲的先
这个视频他讲解这个 num1 = (num2++) - (--num2); 我是这么理解的 num1 = 2-(-1+3),所以num=0; 但是我是对这个弹幕评论有点在意,num1 = num2++ - num2,我认为等于-1,结果在vs上是0,这个不懂;[/quote] 直接公布答案吧: 1、老师错了; 2、你也错了! 这种是未定义行为,就是标准没有规定,由编译器实现时自主决定。具体来说,运算哪个先,哪个后这个没有问题,是明确的(不清楚的自己分析)。重点在于:两个num2如何取值没有规定。本版也有很多讨论这种现象的(其他地方也多),请自行查找。 所以:我们不能这样写程序,非要实现这样的效果请拆分成两条语句。正确答案是:题目错了[/quote] 嗯嗯,这个我知道,写程序是根据自己所期望的目的来写的,取值也是根据那个变量的作用来取, 但视频这个代码只是一般的即兴写的,既然你说得这版块也有类似的问题,那我自己找找看吧! 在此先感谢您的解答,谢谢!
liups 2019-11-06
  • 打赏
  • 举报
回复
wowpH 2019-11-06
  • 打赏
  • 举报
回复
取决于编译器的。 CSDN论坛新手指南
摺耳喵 2019-11-06
  • 打赏
  • 举报
回复
引用 8 楼 qq_45798109的回复:
[quote=引用 3 楼 liups的回复:][quote=引用 2 楼 qq_45798109 的回复:] n++先使用后自增 ++n先自增后使用 num1=(2+1)-3 num2自增之后已经是3不是2了
错[/quote] 哦,错了应该是2-(3-1)[/quote] 真尴尬又写错了,2-(2+1)
liups 2019-11-06
  • 打赏
  • 举报
回复
引用 7 楼 qq_45798109 的回复:
[quote=引用 3 楼 liups的回复:][quote=引用 2 楼 qq_45798109 的回复:] n++先使用后自增 ++n先自增后使用 num1=(2+1)-3 num2自增之后已经是3不是2了
错[/quote] 你两张图写的不一样啊[/quote] 确实不一样,但是都是同样的题目错了!请参考这里: https://blog.csdn.net/qq_29169813/article/details/51416281
摺耳喵 2019-11-06
  • 打赏
  • 举报
回复
引用 3 楼 liups的回复:
[quote=引用 2 楼 qq_45798109 的回复:] n++先使用后自增 ++n先自增后使用 num1=(2+1)-3 num2自增之后已经是3不是2了
错[/quote] 哦,错了应该是2-(3-1)
摺耳喵 2019-11-06
  • 打赏
  • 举报
回复
引用 3 楼 liups的回复:
[quote=引用 2 楼 qq_45798109 的回复:] n++先使用后自增 ++n先自增后使用 num1=(2+1)-3 num2自增之后已经是3不是2了
错[/quote] 你两张图写的不一样啊
liups 2019-11-06
  • 打赏
  • 举报
回复
引用 4 楼 qq_40232848 的回复:
[quote=引用 1 楼 liups 的回复:] 请说一下老师如何讲的先
这个视频他讲解这个 num1 = (num2++) - (--num2); 我是这么理解的 num1 = 2-(-1+3),所以num=0; 但是我是对这个弹幕评论有点在意,num1 = num2++ - num2,我认为等于-1,结果在vs上是0,这个不懂;[/quote] 直接公布答案吧: 1、老师错了; 2、你也错了! 这种是未定义行为,就是标准没有规定,由编译器实现时自主决定。具体来说,运算哪个先,哪个后这个没有问题,是明确的(不清楚的自己分析)。重点在于:两个num2如何取值没有规定。本版也有很多讨论这种现象的(其他地方也多),请自行查找。 所以:我们不能这样写程序,非要实现这样的效果请拆分成两条语句。正确答案是:题目错了
qq_40232848 2019-11-06
  • 打赏
  • 举报
回复
引用 2 楼 qq_45798109 的回复:
n++先使用后自增 ++n先自增后使用 num1=(2+1)-3 num2自增之后已经是3不是2了
我认为是 num1 = 2-(-1+3)=0
qq_40232848 2019-11-06
  • 打赏
  • 举报
回复
引用 1 楼 liups 的回复:
请说一下老师如何讲的先
这个视频他讲解这个 num1 = (num2++) - (--num2); 我是这么理解的 num1 = 2-(-1+3),所以num=0; 但是我是对这个弹幕评论有点在意,num1 = num2++ - num2,我认为等于-1,结果在vs上是0,这个不懂;
liups 2019-11-06
  • 打赏
  • 举报
回复
引用 2 楼 qq_45798109 的回复:
n++先使用后自增 ++n先自增后使用 num1=(2+1)-3 num2自增之后已经是3不是2了
摺耳喵 2019-11-06
  • 打赏
  • 举报
回复
n++先使用后自增 ++n先自增后使用 num1=(2+1)-3 num2自增之后已经是3不是2了
liups 2019-11-06
  • 打赏
  • 举报
回复
请说一下老师如何讲的先

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧