为什么结果是10而不是18,不应该是2+1+2+1=6,然后6*3嘛
这里为什么是F,不太明白,和运算符优先级有关系吗
这个的意思就是以后遇到有 add(x)
的地方就自动替换为 x + x
,而不是 (x + x)
,因此 int sum = add(1 + 2) * 3
就等价于 int sum = 1 + 2 + 1 + 2 * 3
,因此结果等于 10
。
优先级比较:*
高于 <
高于 ==
,对于2 * 2 == 5 < 2 * 2 == 4
,可以看成 (2 * 2) == (5 < (2 * 2)) == 4
,即 4 == (5 < 4) == 4
,即 4 == 0 == 4
,然后得到 0 == 4
,因此是FALSE,执行 else
语句