黑马程序员技术交流社区

标题: 求大神帮我解答 [打印本页]

作者: 西门夜说    时间: 2015-3-23 23:23
标题: 求大神帮我解答
int a = 1;
ing b = a++;
int c = ++a;
int d = a++;
为什么打印的b,c,d结果分别是1,3,3??跪求大神解答!
作者: bansy_chen    时间: 2015-3-23 23:37
你好,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. 希望可以帮到你。
作者: dillinger    时间: 2015-3-23 23:40
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

作者: 西门夜说    时间: 2015-3-23 23:54
bansy_chen 发表于 2015-3-23 23:37
你好,a++ 是先取a的值 然后a再自身加1 ,而++a是a自身先加1然后再取a的值。开始a=1, 因为b=a++,所以b=1 a自 ...

万分感谢!!彻底帮我解决了问题  三克油!!
作者: 西门夜说    时间: 2015-3-23 23:55
dillinger 发表于 2015-3-23 23:40
a++是先用后加,++a是先加后用
b=a++(先赋值,赋值后自加),b=a=1,赋值后,a+1=2,此时a=2
c=++a(先自加, ...

谢谢 你和楼上的哥们说的都太好了!!:)
作者: 西门夜说    时间: 2015-3-23 23:56
dillinger 发表于 2015-3-23 23:40
a++是先用后加,++a是先加后用
b=a++(先赋值,赋值后自加),b=a=1,赋值后,a+1=2,此时a=2
c=++a(先自加, ...

谢谢  彻底弄懂了呢
作者: 西门夜说    时间: 2015-3-23 23:57
dillinger 发表于 2015-3-23 23:40
a++是先用后加,++a是先加后用
b=a++(先赋值,赋值后自加),b=a=1,赋值后,a+1=2,此时a=2
c=++a(先自加, ...

谢谢大神 (づ ̄ 3 ̄)づ
作者: dillinger    时间: 2015-3-24 00:03
西门夜说 发表于 2015-3-23 23:57
谢谢大神 (づ ̄ 3 ̄)づ

相互学习~:P
作者: 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;
作者: 西门夜说    时间: 2015-3-24 23:13
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-24 23:14
dillinger 发表于 2015-3-24 00:03
相互学习~

恩恩   大家一起进步  
作者: bansy_chen    时间: 2015-3-25 21:36
西门夜说 发表于 2015-3-23 23:54
万分感谢!!彻底帮我解决了问题  三克油!!

互相学习:lol
作者: 西门夜说    时间: 2015-4-3 15:25
帮你讲了这么多遍了还要问,丢面孔的
作者: 西门夜说    时间: 2015-4-5 23:29
西门夜说 发表于 2015-3-24 23:13
编译显示b = 1 c = 3 d = 3的说

我问的是思路啊~~~




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