学好编程! 2022-04-17 15:36 采纳率: 96.8%
浏览 22
已结题

我算的是3结果是1 怎么算的呢

#include < stdio.h>

#define SQR(x) x*x

void main()

int a=10,k=2,m=1;

a/=SQR(k+m)/SQR(k+m);
printf("%d',a);

  • 写回答

1条回答 默认 最新

  • czy1219 2022-04-17 17:04
    关注

    首先,需要明白的一个点是:宏定义的展开是在程序的预处理阶段完成的,而且是直接的展开,直接进行符号与数字替换,不会进行计算。
    所以“(SQR(k+m)/SQR(k+m))”直接展开后是等于这样的形式“k+m*k+m/k+m*k+m”,也就是3+1*3+1/3+1*3+1=10,所以最后结果会是1。
    哥们,你别顾着提问题,你前面的题目解答还没采纳呢,动动小手点一下采纳可以吗?

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

报告相同问题?

问题事件

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

悬赏问题

  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?
  • ¥50 复现论文;matlab代码编写
  • ¥30 echarts 3d地图怎么实现一进来页面散点数据和卡片一起轮播
  • ¥15 数字图像的降噪滤波增强
  • ¥15 心碎了,为啥我的神经网络训练的时候第二个批次反向传播会报错呀,第一个批次都没有问题
  • ¥15 MSR2680-XS路由器频繁卡顿问题
  • ¥15 VB6可以成功读取的文件,用C#读不了