黑马程序员技术交流社区
标题:
复合运算符疑问
[打印本页]
作者:
holfioo
时间:
2015-5-13 19:53
标题:
复合运算符疑问
本帖最后由 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~
作者:
坏人难当
时间:
2015-5-13 23:10
本帖最后由 坏人难当 于 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
作者:
hehelaicaicai
时间:
2015-5-14 13:10
++a:先把a的值加1,再进行赋值。a++先赋值再加1。
QQ截图20150514131247.jpg
(68.96 KB, 下载次数: 24)
下载附件
2015-5-14 13:10 上传
作者:
小小黑马很成器
时间:
2015-5-14 15:59
我也是刚入们,看书才搞明白这个问题的,正如楼上2位大神说的;分前缀(++a)和后缀(a++),前缀:就是先将操作的数值增加1,然后取操作数的新增值作为表达式的结果、后缀:是将操作数增加1之前的值作为表达式的结果。
所以b1 = 10+12
b2 = 11+11
作者:
su199325
时间:
2015-5-17 16:56
应该是10+12
作者:
su199325
时间:
2015-5-17 16:57
应该是10+12和11+11
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2