c++问题,为什么输出的i++是11?在m=++i时,i变为了11,在输出i++时,因为不参与运算

c++问题,为什么输出的i++是11?在m=++i时,i变为了11,在输出i++时,因为不参与运算所以就加一变为12了?是答案错了,还是我错在哪里了?

大部分人理解的前自加和后自加的区别是:前自加先+1,再运算;后自加先运算,再+1。你也是这样吧?这已经成为了大多数人的共识,但是是错误的。
现在我来帮你纠正++和--的作用:
前置操作返回加1或减1后的结果,所以返回的是对象本身,这是左值。而后置操作返回一个临时的常量,该常量保留对象加1或减1之前值。不管是前置操作还是后置操作,加1或减1总是执行的。
举例来说明一下:
int i = 0;
int a = ++i; //执行++i,则i的值变成1,而(++i)这个整体由于前置操作返回对象本身,所以整体也是1,则a = 1
int b = i++; //执行i++, 则i的值变成2,而(i++)这个整体由于后置操作返回对象+1之前的值,所以整体还是1,则b = 1
另外,如果有下列写法,第二句是错误的:
++i = 1;
i++ = 1;
至于原因,我想你能明白。追问

懂!!答的好!为你加分!

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-11-10
(i++)表达式的值为i,++j 表达式的值为j+1.追问

不懂,请问我说的错吗?

i++参与运算是用i来运算,然后再加一

那么i++运算后再加一吧

追答

嗯,i++,运算后再+1.++i,i先+1.
++i表达式的值为i+1,而i++为i

追问

感谢,楼上答得最棒!

相似回答