题中的程序怎么打啊
求大佬帮忙{:10_266:}我猜不出你的问题是什么
本帖最后由 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的相关知识 人造人 发表于 2020-2-16 14:09
我猜不出你的问题是什么
题里的答案是8,我打出来的是10{:10_250:} 把int n=3+2改为int n=3试试 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的 ...
应该怎么表达那 Sungne_jer 发表于 2020-2-16 15:03
把int n=3+2改为int n=3试试
显示为6 那样就跟题就没有关系了{:10_297:} 本帖最后由 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;
好好体会一下区别
要验证可以用下面代码
#include <stdio.h>
#define f(n) 2*n
int main(void)
{
printf("%d", f(3+2));
printf("%d", f((3+2));
return 0;
} 公主赛高 发表于 2020-2-16 15:09
显示为6 那样就跟题就没有关系了
感觉楼下老哥说的有理 major_lyu 发表于 2020-2-16 15:15
宏定义展开是字符替换
#define f(n) 2*n
谢谢大佬
页:
[1]