Java中++和—运算符的优先级
|
我从Java的官方教程中了解到前缀和后缀++-有不同的优先级:
后缀:expr ++ expr--
一元:++ expr --expr + expr -expr〜!
经营者
根据教程,这不应该
d = 1; System.out.println(d++ + ++d);
打印出6(d++
使d 2,++d
使3)而不是4?
我知道预先评估++d
的解释,但是如果d++
的优先级高于then2ѭ,为什么不首先评估d++
?而且,在什么情况下ѭ1表示它具有更高的优先级?
编辑:
我尝试了以下方法:
d = 1; System.out.println(++d * d++);
它返回4。似乎应该是2 * 2,而不是1 * 3。
没有找到相关结果
已邀请:
10 个回复
矾醒忻
曝匿弄罚
嗜蒂谷尘旱
,并且此二进制表达式将按以下顺序求值: 左操作数
。该子表达式由一个后缀增量运算符和一个变量组成,因此具有两个作用: 子表达式的值是
变量已更新:
右操作数
。该子表达式包含一个前缀增量运算符和一个变量,因此具有两个作用: 变量已更新:
子表达式的值是
使用两个操作数的值评估运算符“ 17”。 因此,表达式值为1 + 3 = 4。
的前缀和后缀形式之间的不同优先级只能在
中看到,它将解释为
-这没有任何意义(
也没有人),因为
仅适用于变量,不适用于值(结果是一个值)。
绊伦欧
等于to12ѭ,但but25ѭ递增。
将
递增,然后求值为3。
扫窟
混淆不是要评估令牌的优先顺序,您已经做到了。真正的问题在于了解后缀和前缀运算符之间的功能差异。
联海
抵浮细
珊畴炮贩号
物崎巩
是做什么的? http://www.angelikalanger.com/Articles/VSJ/SequencePoints/SequencePoints.html
爆刺疤灯