鱼C论坛

 找回密码
 立即注册
查看: 1026|回复: 9

[已解决]题中的程序怎么打啊

[复制链接]
发表于 2020-2-16 14:04:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求大佬帮忙
IG36`O015IDK7JVP72@(0AT.png 5V)9%O`HYGUG3{PE$CNMM0G.png
最佳答案
2020-2-16 15:15:30
本帖最后由 major_lyu 于 2020-2-16 21:40 编辑

宏定义展开是字符替换
#define f(n) 2*n

f(3+2)展开就是用3+2替换n,结果是2*3+2,所以结果是8
f((3+2)) 展开是 2*(3+2)=10;
好好体会一下区别

要验证可以用下面代码

  1. #include <stdio.h>

  2. #define f(n) 2*n
  3. int main(void)
  4. {
  5.         printf("%d", f(3+2));
  6.         printf("%d", f((3+2));

  7.         return 0;
  8. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-16 14:09:50 | 显示全部楼层
我猜不出你的问题是什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-16 14:43:47 | 显示全部楼层
本帖最后由 chxchxkkk 于 2020-2-16 14:45 编辑

#define F(n) 2*n, 你定义的 int n=2+3 = 5; F(5) = 2*5 = 10。这里 n=2+3,因为+的优先级比=高,所以 n的值是5 而示例中 f(3+2)中的3+2和你 n=3+2意义是不一样的,你再仔细看看 #define的相关知识
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-16 14:55:12 | 显示全部楼层
人造人 发表于 2020-2-16 14:09
我猜不出你的问题是什么

题里的答案是8,我打出来的是10
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-16 15:03:16 | 显示全部楼层
把int n=3+2改为int n=3试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-16 15:07:04 | 显示全部楼层
chxchxkkk 发表于 2020-2-16 14:43
#define F(n) 2*n, 你定义的 int n=2+3 = 5; F(5) = 2*5 = 10。这里 n=2+3,因为+的优先级比=高,所以 n的 ...

应该怎么表达那
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-16 15:09:49 | 显示全部楼层
Sungne_jer 发表于 2020-2-16 15:03
把int n=3+2改为int n=3试试

显示为6 那样就跟题就没有关系了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-16 15:15:30 | 显示全部楼层    本楼为最佳答案   
本帖最后由 major_lyu 于 2020-2-16 21:40 编辑

宏定义展开是字符替换
#define f(n) 2*n

f(3+2)展开就是用3+2替换n,结果是2*3+2,所以结果是8
f((3+2)) 展开是 2*(3+2)=10;
好好体会一下区别

要验证可以用下面代码

  1. #include <stdio.h>

  2. #define f(n) 2*n
  3. int main(void)
  4. {
  5.         printf("%d", f(3+2));
  6.         printf("%d", f((3+2));

  7.         return 0;
  8. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-16 15:30:14 | 显示全部楼层
公主赛高 发表于 2020-2-16 15:09
显示为6 那样就跟题就没有关系了

感觉楼下老哥说的有理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-16 15:58:23 | 显示全部楼层
major_lyu 发表于 2020-2-16 15:15
宏定义展开是字符替换
#define f(n) 2*n

谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-10 09:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表