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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© holfioo 中级黑马   /  2015-5-13 19:53  /  760 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 holfioo 于 2015-5-13 19:58 编辑

如下:int a = 10;int b1 = (a++)+(++a);
a = 10;
int b2 =(++a)+(a++);

b1 , b2 结果如何。?脑袋有点乱,死活搞不明白。。

不是应该b1 = 10+ 11 = 21么?
b2 = 11 +11  = 22~




5 个回复

倒序浏览
本帖最后由 坏人难当 于 2015-5-13 23:11 编辑

你这么记:
++a:+在前面,是在该算式出现的时候直接运算,他所在的位置的值是运算加法后的值
a++:   a在前面,他所在的位置直接就是未运算的前当前a的值,读取完a++并获取a的值之后才执行自身的加法运算

所以
int a = 10;
int b1 = (a++)+(++a);        //b1 = ( 运算前的值10 )   <a执行自加运算=11>   +  ( 运算后的值11+1=12 )
a = 10;
int b2 =(++a)+(a++);         //b2 = ( 运算后的值10+1=11 )  +  ( 运算前的值11 )  <a执行自加运算=12>

b1= 10+12;      b2=11+11
回复 使用道具 举报
++a:先把a的值加1,再进行赋值。a++先赋值再加1。

QQ截图20150514131247.jpg (68.96 KB, 下载次数: 2)

QQ截图20150514131247.jpg
回复 使用道具 举报
我也是刚入们,看书才搞明白这个问题的,正如楼上2位大神说的;分前缀(++a)和后缀(a++),前缀:就是先将操作的数值增加1,然后取操作数的新增值作为表达式的结果、后缀:是将操作数增加1之前的值作为表达式的结果。
所以b1 = 10+12
        b2 = 11+11
回复 使用道具 举报
应该是10+12
回复 使用道具 举报
应该是10+12和11+11
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马