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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李明 黑马帝   /  2011-12-11 13:53  /  3550 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李明 于 2011-12-12 13:28 编辑

                int a=1;
                int b=(a++)+5*a;
                怎么解释结果是11?

9 个回复

倒序浏览
本帖最后由 benbenqi 于 2011-12-11 14:07 编辑

对不起,少打了点。


int b=(a++)+5*a
其实步骤是这样的
b=a;
a=a+1;;
b=b+5*a;
回复 使用道具 举报
李明 黑马帝 2011-12-11 14:03:25
藤椅
benbenqi 发表于 2011-12-11 14:00
int b=(a++)+5*a
其实步骤是这样的
b=a;

你这个结果是10啊,但是运行结果是11
回复 使用道具 举报
李明 发表于 2011-12-11 14:03
你这个结果是10啊,但是运行结果是11

失误失误 少打了

最后应该是
b=b+a*5
回复 使用道具 举报
    int a=1;
                int b=(a++)+5*a;
                怎么解释结果是11?
解释下
  首先a++表示的意思是,先取数据a然后再对a进行数值加1
        ++a表示的意思是,先对数据a进行数值加1然后再取数据a
  那么,再看该表示式
    b=(a++){这时,先取数值a=1,然后对a进行数值加1,这时a=2}+5*a{这时a=2},所以结果为11,
楼主可以试下把5*a改成a++和++a分别试试,看看结果如何,然后自己分析下就会明白了
回复 使用道具 举报
int b=(a++)+5*a;
因为有()这个括号,这说明要先进行++运算,如果要是没有这个括号就是进行赋值运算后,a的值再++,但现在有括号就要先算a++,此时a的值就是2了,再进行2+5*2就等于11了,再把11赋值给b.
回复 使用道具 举报
周胜 黑马帝 2011-12-11 19:45:17
7#
a++先取出a的值参加运算为1,然后a自加1为2,后面5*a=10;加上前面的1为11.
要是变成++a就是12.。一个是先参加运算再自加,后一个是先自加后参加运算
回复 使用道具 举报
黄达标 黑马帝 2011-12-11 21:01:32
8#
(a++)+5*a;按照顺序一步一步来
首先,a的值是1,参与上式运算的第一个a的的值就是1,不用管后面的自加,因为没有执行到这一步
然后,a自加,这时候内存中a的值才变成2,程序继续向下执行,所以后面的a的值是2
最后,就是1+5*2=11
回复 使用道具 举报
冯敏 黑马帝 2011-12-11 22:08:47
9#
a++:先引用后自加
++a:先自加后引用

int a=1;
int b=(a++)+5*a;
引用完a后,a的值会加1,所以5*a = 5*2

如果int c=(++a)+5*a,结果就是12
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马