黑马程序员技术交流社区

标题: 求问 a++ 和 ++a 在语法中得 区别 [打印本页]

作者: 陈伟`    时间: 2015-3-9 10:38
标题: 求问 a++ 和 ++a 在语法中得 区别
    求问 a++   和 ++a  在语法中得 区别   请各位高手详解具体点
作者: zhenghm    时间: 2015-3-9 10:40
a++是a+1后再操作,++a是a+1之前操作a,这时候a还是原来的值,a再加1
作者: waterfoxjie    时间: 2015-3-9 11:06
本帖最后由 waterfoxjie 于 2015-3-9 11:12 编辑

两个都是自加,区别在于:
a++是先使用a之后再进行自加,而++a是先进行自加,再使用自加之后的值
比如现在有个题是:
int a = 10;
int b = (a++) +(++a);
输出现在b跟a的值,你觉得答案是多少呢?!
(a++)这个地方是先使用a=10的值然后a自加等于11; (++a)是在a=11的基础上先自加等于12之后再进行运算。所以这里也可以写为是:10+12
b的值最终是等于22,a的值是等于12
希望我的解释你听的懂,不会被我绕晕哈~~

作者: adslunk    时间: 2015-3-9 11:08
如果a=1
输出++a 会先执行++        再输出          ——结果为2
输出a++ 会先输出            再执行++     ——结果为1
作者: 570369946    时间: 2015-3-9 11:10
用汇编可以解释清楚
作者: yafengxn    时间: 2015-3-9 11:10
本帖最后由 yafengxn 于 2015-3-9 11:25 编辑

同意楼上上的意见
作者: 搬砖小_BrBHz    时间: 2015-3-9 11:16
a++是a+1后再操作,++a是a+1之前操作a,这时候a还是原来的值,a再加1
作者: 陈伟`    时间: 2015-3-9 11:23
waterfoxjie 发表于 2015-3-9 11:06
两个都是自加,区别在于:
a++是先使用a之后再进行自加,而++a是先进行自加,再使用自加之后的值
比如现在 ...

谢谢  大神提示
作者: 陈伟`    时间: 2015-3-9 11:24
zhenghm 发表于 2015-3-9 10:40
a++是a+1后再操作,++a是a+1之前操作a,这时候a还是原来的值,a再加1

感谢 大神
作者: zhangjianbin    时间: 2015-3-9 11:35
记住+在前就先加1,+在后就后加1就行了
作者: 陈伟`    时间: 2015-3-11 14:22
waterfoxjie 发表于 2015-3-9 11:06
两个都是自加,区别在于:
a++是先使用a之后再进行自加,而++a是先进行自加,再使用自加之后的值
比如现在 ...

非常  感谢   讲的 很细      以后有问题  直接请教你了
作者: waterfoxjie    时间: 2015-3-11 14:51
陈伟` 发表于 2015-3-11 14:22
非常  感谢   讲的 很细      以后有问题  直接请教你了

;P相互学习~~
作者: guyinghua901018    时间: 2015-3-11 14:55
简单的来说,++i 和 i++,在单独使用时,就是 i=i+1。  而 a = ++i,相当于 i=i+1; a = i;  而 a = i++,相当于 a = i; i=i+1;
作者: passchaos    时间: 2015-3-11 15:15
就看++和a谁在前,在前边的先取值,不过执行过后都是a增加1
作者: 安若宸king    时间: 2015-3-11 15:17
a++  先使用a  用完再加1   ++a    先加1  再用a
作者: devhackill    时间: 2015-3-12 00:25
waterfoxjie 发表于 2015-3-9 11:06
两个都是自加,区别在于:
a++是先使用a之后再进行自加,而++a是先进行自加,再使用自加之后的值
比如现在 ...

说的挺好
作者: waterfoxjie    时间: 2015-3-12 00:30
devhackill 发表于 2015-3-12 00:25
说的挺好

谢谢~~~~
作者: 卟離不棄    时间: 2015-3-12 00:43
不参加运算 都一样
参加运算时,a++是先操作数据,然后++:++a是先++:然后操作数据
作者: futaoheima    时间: 2015-3-12 08:11
更深的理解了,之前看过视频有点忘了
作者: 709868495@qq.co    时间: 2015-3-12 09:02
zhenghm 发表于 2015-3-9 10:40
a++是a+1后再操作,++a是a+1之前操作a,这时候a还是原来的值,a再加1

你的错了
作者: youga    时间: 2015-3-12 10:37
a++是先进行本次运算,再+1
例:
  1. int a =3; int b = 6;
  2. int c = (a++) + b ;
复制代码

问c=?
这个例子中a++处在 [(a++) + b ]这个运算过程中,所以先运算 [(a++) + b ]=[(3) + 6] = 9;
运算完之后,a加1,此时a=4 。

++a是先+1,再进行本次运算。
例:
  1. int a =3; int b = 6;
  2. int c = (++a) + b ;
复制代码

问c=?
这个例子中++a虽然处在 [(a++) + b ]这个运算过程中,
但是++a的本质是不管发生什么,先自己加1,此时a==4,
再运算 [(++a) + b ]=[(4) + 6] = 10;
作者: futaoheima    时间: 2015-3-12 10:49
讲的很好,我懂了,大家互相帮助互相学习啊,多在论坛上 问一些技术上的问题,不过不要太难的啊,我们都还是初学者




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