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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2013-9-20 23:53  /  6458 人查看  /  22 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

       楼主的疑问应该是为什么在“sum=age++-10”中,二元运算符“—”会先于一元运算符“age++”进行运算。       我的看法是这样的,在这里二元符并没有先于一元符进行运算,老师所讲的优先级规则在这里完全适用,只是在这个式子里体现不出来而已。
       在此式中:
              一元符的运算规则是  “先进行二元运算,然后age加1”
              二元符的运算规则是  ”等待age++先执行,再将age++和10相减去“。
      在这个式子里无论你先执行哪种运算,从表面上看,运算方式和结果都是一样的。这样讲不知道是不是你想要的答案,如果没明白我还可以举一个沉船逃生的例子更形象一些。
回复 使用道具 举报
黑色海 发表于 2013-9-21 15:35
先明白,优先级就是指参与运算时的运算顺序,谁先运算,谁的优先级就高
a++先运算后自增操作数,说明它的优 ...

运行了你的代码后,突然发现这个后加加自增的时间点有点复杂,把握不了。不过我作为初学者,我觉得理解程度应该够了吧,我也许暂时没必要把过多的精力放在这个小问题上。
回复 使用道具 举报
Always. 发表于 2013-9-24 00:13
想了会,还是不明白 ?不知道你所说的一元符的运算规则是  “先进行二元运算,然后age加1”,二元符的运 ...

age++的规则可以看做是执行其他运算后再自增1,在这个是式子里,按老师讲的优先级规则应该先执行age++,那在这里age++的运算规则,或者说运算方法是什么?方法就是“等待减法运算完成再自增1”.一艘大船要沉了,救生设施有限,先离开船的人生存机会更大。这时候有船长可能会有两种决定:
1.让妇孺先走,男人次之。
2.让妇孺先决定谁先走,男人次之。
第一中情况下很好理解,按规则来,结果一定是妇孺先走了。
第二种情况的话,结果是什么?结果可能是妇孺先走,或者是男人先走了。
有人会不解为什么优先权在女人手里。结果却有可能是男人先走了。那是因为他们默认了一个条件,就是他们认为在这种情况下,人们一定会决定让自己先走。
回到运算符的问题上,你之所以对这个问题不解,是因为你心理默认了一个条件,那就是,当一个运算符开始执行的时候,它做的第一件事一定是对自己的操作数进行操作。
沉船中,不解的人忽略了,会有那么个别的妇孺会因为种种原因,决定让男人先走。
在运算符问题中,你忽略了,会有那么几个运算符,它们的规则就是先让其它运算符运算,然后在操作自己。(例如age++)
这种运算规则和传统意义上的加减乘除有很大不同。

如果实在搞不清楚,就只能记住吧,优先级规则这里是适用的,只是没有体现出来而已。毕竟在这个小地方浪费太多精力,得不偿失。

回复 使用道具 举报
翻了翻书,找到两句书上原话,可以帮助理解(返回变量值就是要在表达式里需要用的值)。

前置递增++var           描述(变量的值加1并保存,返回变量的值)
后置递增var++           描述(变量的值加1并保存,返回变量递增之前的旧值)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马