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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 林枢 黑马帝   /  2011-9-27 21:54  /  2587 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int a =2;
int s1=a+3*a++ ;
int s2 = (a++)+3*a;

s1 和s2 分别是多少

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1

查看全部评分

14 个回复

倒序浏览
黑马网友  发表于 2011-9-27 22:03:44
沙发
9
9
应该都是9,这种问题直接试试,我没试
a++应该是先赋值在修改值,++a应该是先修改值在赋值
回复 使用道具 举报
黑马网友  发表于 2011-9-27 22:05:27
藤椅

回复 沙发 的帖子

不对 第一个还是挺简单的
回复 使用道具 举报
黑马网友  发表于 2011-9-27 23:17:30
板凳
8
15
++的优先级高于*与+,而且第二个式子里的()可以没有,只是让大家看清楚层次的作用。
:loveliness:

评分

参与人数 1技术分 +2 收起 理由
wangfayin + 2 回答正确!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-28 09:44:04
报纸
这个应该是s1=8;s2=15其实只要明白++n或n++的原理就行,++n是吃了饭再去玩,已经吃了,n++是玩完再回来吃饭,玩的时候还没有吃饭。
回复 使用道具 举报
黑马网友  发表于 2011-9-28 10:21:08
地板
int a=2;
int s1=a+3*a++ ;
int s2=3*a++ + a;

int s3 =(a++) + 3*a;
int s4 =3*a +(a++);
算一算上面的你就会明白了
回复 使用道具 举报
黑马网友  发表于 2011-9-28 10:46:22
7#
验证一下才知道,这里面学问大了去了,自愧不如
回复 使用道具 举报
黑马网友  发表于 2011-9-28 11:05:54
8#
第一个是8(a++ 是先赋值,后自加),第二个是15.
回复 使用道具 举报
黑马网友  发表于 2011-9-28 15:07:15
9#
9
15
可惜错了,还在不解中........
我得翻书了
回复 使用道具 举报
黑马网友  发表于 2011-9-28 17:08:21
10#
看了感觉是8,11,还很坚定,验证说明我错了 ,学习中
回复 使用道具 举报
黑马网友  发表于 2011-9-28 17:24:03
11#
int a =2;                       
int s1=a+3*a++ ;                s1=8  //3*a++=6    6+a=8;              此时a=3;
int s2 = (a++)+3*a;             a++ =3;   但是a已经自加变成4         3*a=12;   12+a++=15;

真是琢磨一会啊 !  好题。  长知识了
回复 使用道具 举报
黑马网友  发表于 2011-9-28 21:38:41
12#

回复 楼主 的帖子

s1=8,右边式子中第一个a为2,第二个a参与运算时也为2,运算后变为3,所以2+3*2结果为8。
s2=15,右边式子中第一个a为3,自加后a变为4,所以第二个a的值为4,结果为3+3*4=15。
回复 使用道具 举报
黑马网友  发表于 2011-9-29 13:16:54
13#
第一口算算错了
呵呵
后来弄明白了。
第一个 是2+3*2=8 此后a=3,第二个是先进行a++,此后a=4,结果就是3+3*4=15.
回复 使用道具 举报
黑马网友  发表于 2011-9-29 17:05:17
14#
s1=8   
s2=15
a++表示的是先运算然后再把a+1后的值赋给a,所以s1=2+3*2   s2=3+3*4
回复 使用道具 举报
黑马网友  发表于 2011-9-29 23:05:07
15#
偶错了,
a++应该是先赋值在修改值,++a应该是先修改值在赋值 我是知道,但是忘记了a++相当于a=a+1 a的值被修改了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马