老师,关于宏函数的问题
来源:5-3 宏函数

张婧仪
2023-10-20
老师,您在这小结的8分26秒处提到“在宏中,参数和返回值没有类型概念”。
代码如下:
#include <stdio.h>
#define MAX(a,b) (a)>(b)?(a):(b)
#define IS_HEX_CHARACTER(ch) \
((ch)>='0'&&(ch)<='9')|| \
((ch)>='A'&&(ch)<='F')|| \
((ch)>='a'&&(ch)<='f')
int Max(int a, int b){
return a>b?a:b;
}
int main(){
int max=MAX(5.555,3);
printf("max:%d\n",max);
printf("Is A a hex character %d\n",IS_HEX_CHARACTER('1'));
printf("Is A a hex character %d\n",IS_HEX_CHARACTER(1));
return 0;
}
打印结果如下:
既然您说参数和返回值没有类型概念,那为什么
在第一个结果中,为什么打印5,而不是5.555
在二三结果中,加了单引号就打印1,不加单引号就打印0呢?
写回答
2回答
-
bennyhuo
2023-10-20
第二第三个,你传 '1',相当于传了个整数49,这是字符1的ascii码。所以同学再想想结果为什么跟直接传1不一样呢032023-10-20 -
bennyhuo
2023-10-20
宏只是代码替换,所以你看下替换后的代码就明白了。
第一个你打印的整型max,你改成float用%f打印试试022023-10-20
相似问题