黑马程序员技术交流社区

标题: 求++ 等运算符的详细解释 [打印本页]

作者: 马文浩    时间: 2012-5-10 00:51
标题: 求++ 等运算符的详细解释
算数运算符

++ 前缀增
例子:a=10;b=++a;
结果:a=11,b=11

++ 后缀增
例子:a=10;b=a++;
结果:a=11,b=10

- -  前缀减
例子:a=10;b=- -a;
结果:a=9,b=9

- - 后缀减
例子:a=10;b=a- -;
结果:a=9,b=10

a=16/3  结果:5

上述运算到底是怎么回事。张老师的视频i里我还没看到有关这方面的解释,我在其他书上看到的。以上几个运算符的定义百思不得其解……
求大侠详细解释下。多多拜托了!
作者: 黑马-王建雨    时间: 2012-5-10 01:01
++i把i的值加1,再使用i。
而i++是先使用i,使用完了把i值加1。
- -i把i的值减1,再使用i。
而i- -是先使用i,使用完了把i值减1。希望能帮到你。
作者: 马文浩    时间: 2012-5-10 01:08
啷个里个郞 发表于 2012-5-10 01:01
++i把i的值加1,再使用i。
而i++是先使用i,使用完了把i值加1。
- -i把i的值减1,再使用i。

你这样一解释我完全明白啦,太谢谢你了。那a=16/3  结果:5  又是怎么回事呢?16/3等于5的话,我想知道那个余数1跑哪去了。再麻烦次

作者: 黑马-王建雨    时间: 2012-5-10 01:18
马文浩 发表于 2012-5-10 01:08
你这样一解释我完全明白啦,太谢谢你了。那a=16/3  结果:5  又是怎么回事呢?16/3等于5的话,我想知道那 ...

16/3结果自动取整,余数舍去。
作者: 袁錦泰    时间: 2012-5-10 01:21
++ 前缀增
例子:a=10;b=++a;
结果:a=11,b=11
//将"b=++a"分开来看,因为它们需要分别做算术运算,只是顺序存在先后
//"++a":"++"在前,"a"自身先做运算,"++a"=a+1;此时"a"=10+1=11;
//最后将a的值赋给"b","b"的值也就是11

++ 后缀增
例子:a=10;b=a++;
结果:a=11,b=10
//将"b=a++"分开来看,因为它们需要分别做算术运算,只是顺序存在先后
//先将"a++"作为整体赋值给"b",此时"a++"的值依然为10没有变,故"b"=10;
//"a++":"++"在后,"a"自身后做运算,"a++"=a+1;此时"a"=10+1=11;

- -  前缀减
例子:a=10;b=- -a;
结果:a=9,b=9
//将"b=--a"分开来看,因为它们需要分别做算术运算,只是顺序存在先后
//--a":"--"在前,"a"自身先做运算,"--a"=a-1;此时"a"=10-1=9;
//最后将"a"的值赋给"b","b"的值也就是9

- - 后缀减
例子:a=10;b=a- -;
结果:a=9,b=10
//将"b=a--"分开来看,因为它们需要分别做算术运算,只是顺序存在先后
//先将"a--"作为整体赋值给"b",此时"a--"的值依然为10没有变,故"b"=10;
//"a--":"--"在后,"a"自身后做运算,"a--"=a-1;此时"a"=10-1=9;
总结:
++/--前缀增/减:先具体运算,后整体赋值
++/--后缀增/减:先整体赋值,后具体运算


a=16/3  结果:5
"/"运算符是除运算符,也就是我们数学中所谓的做除法,但在计算机内默认的运算符数据类型为int型数据类型,所以得出的结果为整数,不会有小数(点)存在,你若需要提高运算精度,可以手动将"a"的数据类型设置为float(单精度)/double(双精度)数据类型,设置后运算得出的结果就会更加精确,也就是小数.但是你这两个数相除之后的结果是无限循环小数,所以在单/双精度内也会做位的保留动作,计算机不会无限循环的除下去.

最后,这些东西并不难理解,只是我们以前没有接触过,现在刚刚接触到感觉有些不太适应,你看得多了自然就不会再有困惑.
如果还有不明白,联系我,不用客气.
作者: 马文浩    时间: 2012-5-10 02:05
袁錦泰 发表于 2012-5-10 01:21
++ 前缀增
例子:a=10;b=++a;
结果:a=11,b=11

真详细,太感谢你啦。最后那个 a=16/5 结果:5 我有了一点猜测,但是没你说的那么详细和准确,努力呀
作者: It's_Zero    时间: 2012-5-10 14:34
楼上说了那么多了,我就给你个简便记忆的
if (++(- -)在前面 ) 先运算后操作
else 先操作后运算;
a = ++b + c ++
运算效果等同于
b=b+1;
a = b+c;
c=c+1;

拆开来理解就 ok 了




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