求帮看这段代码哪里有问题

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图

#define A(x) x/2
int B(int x)
{
return x/2;
}
int main
{
printf("%d\n%d",A(7+3),B(7+3));
return 0;
}

运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

改正如下

#include<stdio.h>
#define A(x) x/2

int B(int x)
{
  return x/2;
}
int main()
{
  printf("%d\n%d",A(7+3),B(7+3));
  return 0;
}

运行结果如图:

img

以上仅供参考,如有任何疑问,可以评论回复,看到即回。
希望对题主有所帮助!可以的话,点个采纳!

你的main函数没有括号

img


#define是对元素进行替换
你写的7+3并没有在计算后再进行define里面的x/2操作,而是先3/2=1,1+7=8
A(7+3) → 7+3/2 → 7+1
需要再加一个括号,让7+3变成整体,计算后再进行/2操作

img

如果对你有帮助,还请点个采纳,万分感谢!

供参考:

#include <stdio.h>
#define A(x) (x)/2  //x/2  x这里缺了括号,改为 (x)/2
int B(int x)
{
   return x/2;
}
int main() //这里缺了'()'
{
   printf("%d\n%d",A(7+3),B(7+3));
   return 0;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632