m0_47624399 2022-04-12 21:44 采纳率: 100%
浏览 22
已结题

为什么最后运算结果是3

#include<stdio.h>
#define m(x,y)(x/y)
int main()
{
printf("%d",m(3+4,6*2));
return 0;
}

  • 写回答

2条回答 默认 最新

  • A-Chin 2022-04-12 21:50
    关注

    define定义函数时,可以看成是一个简单的替换
    比如:#define Add(a,b) a+b;
    如果 y = c * Add(a,b) * d 的时候就会出现问题,代数式的本意是 a+b 然后去和 cd 相乘,但是因为使用了define,所以式子实际上变成了 c*a + b*d
    所以这里的式子:
    m(3+4,6*2) = 3+4/6*2
    = 3 + 0 * 2 = 3 + 0 = 3

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

报告相同问题?

问题事件

  • 系统已结题 4月21日
  • 已采纳回答 4月13日
  • 创建了问题 4月12日

悬赏问题

  • ¥15 关于stm32hal库驱动ft6336触摸屏遇到的问题
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111
  • ¥100 关于#audobe audition#的问题,如何解决?
  • ¥15 allegro17.2生成bom表是空白的
  • ¥15 请问一下怎么打通CAN通讯
  • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥15 高通uboot 打印ubi init err 22