黑马程序员技术交流社区

标题: 一个很简单的问题~ [打印本页]

作者: czb    时间: 2014-9-13 19:24
标题: 一个很简单的问题~
int a=2;
int b=(a++)+3*a;
那么b等于多少呢~
作者: czb    时间: 2014-9-13 19:27
还有一个就是int a=2;
作者: czb    时间: 2014-9-13 19:28
czb 发表于 2014-9-13 19:27
还有一个就是int a=2;

那么int c=a+3*a++;
那么c等于多少呢
作者: AlanHand    时间: 2014-9-13 19:30
a++在本次计算中不会变,在下一次计算才会变成3,因此为2+3*3=11
作者: 朱小龙    时间: 2014-9-13 19:31
答案是11.应该是因为++在后,所以第一个a的值是2,然后3*a的时候a的值就是3了。
作者: Fightin黑马    时间: 2014-9-13 19:33
11 ,自己写代码试一下不就 知道了
作者: czb    时间: 2014-9-13 19:34
哈哈哈,我发现张老师的ppt里面讲错了~
作者: pvting    时间: 2014-9-13 23:06
结果应该是   b=2+9=11
作者: ql627666537    时间: 2014-9-13 23:28
应该是11   没错的话
作者: 梦里听传说    时间: 2014-9-13 23:33
int a=2; int b=(a++)+3*a; 那么b等于多少呢~ 等于9
作者: 梦里听传说    时间: 2014-9-13 23:35
下一个 是c=11
作者: fantacyleo    时间: 2014-9-14 00:03
11 Java与C不同,Java对表达式求值顺序做了严格规定。一定会等到a++的全部效应都执行完毕之后才会去计算3*a
作者: czb    时间: 2014-9-14 08:42
梦里听传说 发表于 2014-9-13 23:33
int a=2; int b=(a++)+3*a; 那么b等于多少呢~ 等于9

要努力了,算错了,第一个是11,第二个是12~
作者: zhappy    时间: 2014-9-14 09:19
b=(2)+3*3=11
作者: LFW    时间: 2014-9-14 10:31
        int a=2;         int b=(a++)+3*a;》》》这个应该是 )))) 不管a++还是++a,运算完a都是3。。。。a++和++a的区别在于(a++)还是2,(++a)是3.所以b = (a++)+3*a等于2+3*3=11。
作者: LFW    时间: 2014-9-14 10:40
LFW 发表于 2014-9-14 10:31
int a=2;         int b=(a++)+3*a;》》》这个应该是 )))) 不管a++还是++a,运算完a都是3。。。。a++和++a的 ...

b*a++   b*a , a=a+1
b*++a   a=a+1,b*a》》》》》或许这样更好理解。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2