yuyou517 发表于 2017-2-14 22:42:44

define的问题

#include<stdio.h>
#define a(x) x*2
void main()
{
        int n,m;
        n = 5;
        m = 1;
        printf("a(x)=%d\n",a(n+m));

        return 0;
}

结果为什么是7?

chuck1028 发表于 2017-2-14 22:46:44

宏是直接替换的所以a(n+m) 替换之后就是 n+m*2,也就是5+1*2=7
定义宏时给x加括号 #define a(x) (x)*2,这样替换之后就是 (5+1)*2

jackche0214 发表于 2017-2-15 15:15:16

定义的宏是直接带进去的。不经过处理,也就是a(n+m) 是 n +m*2

heblhc 发表于 2017-2-15 15:25:07

学习学习

Dawn_ 发表于 2017-2-15 16:30:55

很牛逼的样子
页: [1]
查看完整版本: define的问题