all righyyyy 2023-04-25 14:03 采纳率: 97.4%
浏览 11
已结题

#c语言# define


#include <stdio.h>
#define M(x,y)x%y
int main()
{
    int a = 3, b = 3, n;
    n =4/M(a + 1, b);
    
    printf("%d", n);
    return 0;
}

请问 M(a+1,b) 不是等于 3+1 % 3 = 4 吗?
为什么最终 n = 2?

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2023-04-25 14:23
    关注

    要注意括号的顺序,M宏扩展后是:
    n = 4 / a + 1 % b; 也就是 n = 4/3 + 1%3 = 1 + 1 = 2
    不是 n = 4 /( (a+1)%b); 也就是 n = 4 / (4%3) = 4

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月4日
  • 已采纳回答 4月26日
  • 创建了问题 4月25日

悬赏问题

  • ¥20 ARKts悬浮窗和快捷方式问题
  • ¥15 comparecluster没有办法kegg
  • ¥15 远程访问linux主机超时
  • ¥15 odoo17存货管理优势于中国国内该行业传统ERP或MES的详细解读和举例
  • ¥15 CPU卡指令整合指令数据都在图片上
  • ¥15 odoo17处理受托加工产品
  • ¥15 如何用MATLAB编码图三的积分
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES