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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 西门夜说 中级黑马   /  2015-3-23 23:23  /  728 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int a = 1;
ing b = a++;
int c = ++a;
int d = a++;
为什么打印的b,c,d结果分别是1,3,3??跪求大神解答!

13 个回复

倒序浏览
你好,a++ 是先取a的值 然后a再自身加1 ,而++a是a自身先加1然后再取a的值。开始a=1, 因为b=a++,所以b=1 a自动加1等于2.  c=++a ,所以a先加1  a=3,把3赋给c 所以c等于3 ,同理 d=a++,所以d=3 然后a自动加1等于4  你可以在最后测试一下a的值是否为4. 希望可以帮到你。
回复 使用道具 举报
a++是先用后加,++a是先加后用
b=a++(先赋值,赋值后自加),b=a=1,赋值后,a+1=2,此时a=2
c=++a(先自加,自加后赋值),此时a已经等于2了,先加后用,a+1=3,在赋值给c,此时a=3
d=a++(先赋值,赋值后自加),d=a=3,赋值后,a+1=4
回复 使用道具 举报 1 0
bansy_chen 发表于 2015-3-23 23:37
你好,a++ 是先取a的值 然后a再自身加1 ,而++a是a自身先加1然后再取a的值。开始a=1, 因为b=a++,所以b=1 a自 ...

万分感谢!!彻底帮我解决了问题  三克油!!
回复 使用道具 举报
dillinger 发表于 2015-3-23 23:40
a++是先用后加,++a是先加后用
b=a++(先赋值,赋值后自加),b=a=1,赋值后,a+1=2,此时a=2
c=++a(先自加, ...

谢谢 你和楼上的哥们说的都太好了!!:)
回复 使用道具 举报
dillinger 发表于 2015-3-23 23:40
a++是先用后加,++a是先加后用
b=a++(先赋值,赋值后自加),b=a=1,赋值后,a+1=2,此时a=2
c=++a(先自加, ...

谢谢  彻底弄懂了呢
回复 使用道具 举报
dillinger 发表于 2015-3-23 23:40
a++是先用后加,++a是先加后用
b=a++(先赋值,赋值后自加),b=a=1,赋值后,a+1=2,此时a=2
c=++a(先自加, ...

谢谢大神 (づ ̄ 3 ̄)づ
回复 使用道具 举报
西门夜说 发表于 2015-3-23 23:57
谢谢大神 (づ ̄ 3 ̄)づ

相互学习~:P
回复 使用道具 举报
Etby 中级黑马 2015-3-24 00:24:11
9#
b 编译报错 如果是int的话 (b=a)++; 是b=1  a =2;  c = (++a); c =2 a =3; (d = a)++; d =3 , a=4;
回复 使用道具 举报
Etby 发表于 2015-3-24 00:24
b 编译报错 如果是int的话 (b=a)++; 是b=1  a =2;  c = (++a); c =2 a =3; (d = a)++; d =3 , a=4; ...

编译显示b = 1 c = 3 d = 3的说
回复 使用道具 举报

恩恩   大家一起进步  
回复 使用道具 举报
西门夜说 发表于 2015-3-23 23:54
万分感谢!!彻底帮我解决了问题  三克油!!

互相学习:lol
回复 使用道具 举报
帮你讲了这么多遍了还要问,丢面孔的
回复 使用道具 举报
西门夜说 发表于 2015-3-24 23:13
编译显示b = 1 c = 3 d = 3的说

我问的是思路啊~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马