
为什么结果是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 语句