A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 飞翔的猪   /  2015-5-9 15:16  /  4131 人查看  /  51 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

你应该看看,++n 还n++ 区别

aq.png (145.24 KB, 下载次数: 33)

aq.png

ba.png (36.76 KB, 下载次数: 32)

ba.png
回复 使用道具 举报
必须是22 ,吓一跳。。
回复 使用道具 举报
好像视频将的还是挺详细的
回复 使用道具 举报
真笨呀 ,这都不会
回复 使用道具 举报
五楼正解
回复 使用道具 举报
++a后的a的结果是11,a++是在11的基础上加1,也就是12。11+12=23
回复 使用道具 举报
不是22吗?你确定是23吗?
回复 使用道具 举报
不要纠结了,看看博客吧!http://bbs.csdn.net/topics/370153775
回复 使用道具 举报
杰杰 中级黑马 2015-10-23 11:30:09
49#
本帖最后由 杰杰 于 2015-10-23 11:32 编辑

int a = 10;
(a++)+(++a)

a++的值应该是10吧,然后a=11
a = 11的时候做++a
++a的值应该是12  这时a也应该等于12.
然后10+12等于22.
我来解释一下我怎么想的,在a++中a++的值等于a 的初始值,a一开始是等于10的,所以a++这个式子的值就等于10, 然后a的值经过++之后应该是等于11的,a的值和a++的值是不能混为一谈的。后面我就不说了
回复 使用道具 举报
看来是编译器的问题没错了,我也用的Dev c++,我擦,赶紧换掉
回复 使用道具 举报
编译器肯定没问题,*(++a)和(a++)优先级都是一样的.
C不能保证(++a)和(a++)哪个先运算,最好的办法就是避免这种写法.
因为大多数编译器在某些细节方面是不一样的,这样写的话在移植到别的机器上就容易出现问题,需要调试.
回复 使用道具 举报
明显22,而且,你的括号也是不需要的
回复 使用道具 举报
123
您需要登录后才可以回帖 登录 | 加入黑马