#define MAX 20
int main()
{
printf("%d\n", MAX); //输出20
return 0;
}
其实就是把20替换给MAX了。
#include <stdio.h>
#define N 2
#define M N + 1
#define NUM (M + 1) * M / 2
int main()
{
printf("%d\n", NUM); //输出8
return 0;
}
N∪M 宏只是替换,(N+1)*N+1/2=(2+1)*2+1/2=8,并不是直接进行计算。
test.c 文件中包括如下语句,文件中定义的四个变量中,是指针类型的变量为【多选】(ACD )
#define INT_PTR int*
typedef int* int_ptr;
INT_PTR a, b;
int_ptr c, d;
A: a B: b C: c D: d
就是定义宏,其实是替换INT_PTR替换为int*
因为#define是宏定义,仅仅是直接替换,INT_PTR a, b; 进行宏替换后代码是这样的:int *a, b;这里的int *是a的类型,b的类型是int,故此次b只是int类型。而typedef是把该类型定义一个别名,别名是一个独立的类型了,使用这个类型创建的变量都是这个类型的。
所以 a,c,d才是指针类型