zhanjunlihai 2023-11-18 20:11 采纳率: 24.7%
浏览 0
已结题

预处理带参数的宏定义

不太懂 sq1=16 怎么计算的?
sq1=16/SQ(a+1) 这个a=3带进去怎么计算呢?

#define SQ(y) (y)*(y)
int main()
{  int a,sq;
    printf("input a number:");
    scanf("%d",&a);
    sq=SQ(a+1); sq1=16/SQ(a+1);         
/*宏代换后得到:sq=(a+1)*(a+1); */
printf("sq=%d   sq1=%d\n",sq,sq1);
}

运行结果 sq=16 sq1=16
  • 写回答

2条回答 默认 最新

  • 柯本 2023-11-18 20:23
    关注

    简单的分析,主要是运算顺序的问题。

    
    sq=SQ(a+1) = (a+1)*(a+1)=4*4=16
    sq1=16/SQ(a+1)=16/(a+1)*(a+1)=16/4*4=16
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月26日
  • 已采纳回答 11月18日
  • 创建了问题 11月18日