killfafa 2022-04-07 14:17 采纳率: 90%
浏览 47
已结题

关于define的问题

img


为什么结果是10而不是18,不应该是2+1+2+1=6,然后6*3嘛

img


这里为什么是F,不太明白,和运算符优先级有关系吗

  • 写回答

4条回答 默认 最新

  • A-Chin 2022-04-07 14:26
    关注
    1. 这个的意思就是以后遇到有 add(x) 的地方就自动替换为 x + x,而不是 (x + x),因此 int sum = add(1 + 2) * 3 就等价于 int sum = 1 + 2 + 1 + 2 * 3,因此结果等于 10

    2. 优先级比较:* 高于 < 高于 ==,对于2 * 2 == 5 < 2 * 2 == 4,可以看成 (2 * 2) == (5 < (2 * 2)) == 4,即 4 == (5 < 4) == 4,即 4 == 0 == 4,然后得到 0 == 4,因此是FALSE,执行 else 语句

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月15日
  • 已采纳回答 4月7日
  • 创建了问题 4月7日