18.写出下列表达式的值,设x=3,y=17,yn=true.
先说一个关于Java运算符优先级口诀;
一元乘除加减然后位,逻辑三元赋值就结束。
解释一下:一元即为一元逻辑运算符,其中包括: ++、--、-(这是负号不是减号)、+(这是正号不是加号)、!、~
乘除: *、/、%
加减: +、-
位即为位运算符,其中包括:
逻辑即为逻辑运算符,其中包括:&、|、&&、||、^
三元即为三元条件运算符即: 表达式1?表达式2:表达式3
当表达式1的结果为ture时,整个式子的结果为表达式2的值,当表达式1的结果为false时,整个式子的结果为表达式3的值.
赋值就是拓展赋值运算符,例如;+=,-+,*=等等
(1)x+y*x--
解:第一步:y*x=3*17=51
第二步: x+51=54
这时结果已经出来了就是54,而x--还没有算,因此x--对式子没有影响
最后进行x--,x=x-1,即x=3-1=2,
(2)-x*y+y
先-x即-3,然后(-3)*17=-51,-51+17=-34
(3)x<y&&yn
&&为简洁与,x<y为true,yn为true,结果为true
(4)x>y||!yn
注意;先 !yn=false, x>y为false, 两个结果都为false,最后结果为false
(5)y!=++x?x:y
先++x, x=x+1=4, 17!=4的结果为true,整个式子的结果为x的值,为4
(6)y++/--x
先--x, x=x-1=2, y/2=17/2=8.5, 最后别忘了y++,y=y+1=18,