解题思路:
宏定义的本质只是替换,类似内联函数。所以实际上有无参数,对预处理器和编译器来讲,都是一样的,所谓参数只是增强人类观感和提高易读性。
参考代码即可看到,实际上,只需要是宏定义 ||字符序列|| 中所用到的参数,在 ||标识符|| 之前出现,对于编译器来讲,就是一个符合规则的宏定义。否则的话,就出现了在声明之前调用变量的情况。
可以试一试把宏定义全部替换成目标字符序列,再看一看代码有什么不一样。
参考代码中未有参数,主函数中仅声明了a,b,c作为三边。
参考代码:
#include<math.h>
#include <stdio.h>
#define S (a+b+c)*0.5
//将 S (大写) 定义为 (a+b+c)*0.5
#define area sqrt(S*(S-a)*(S-b)*(S-c))
//将 area 定义为 sqrt(S*(S-a)*(S-b)*(S-c)) 因为先定义S,所以这里可以直接使用,且主函数亦无须考虑S
int main(void){
float a,b,c;
scanf("%f%f%f",&a,&b,&c);
printf("%.3f",area);
return 0;
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题8.1 (Java代码)浏览:782 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:1122 |
输出正反三角形 (C语言代码)浏览:794 |
WU-C语言程序设计教程(第三版)课后习题11.12 (C++代码)(想学链表的小伙伴可以看看)浏览:905 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:578 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:1072 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:471 |
敲七 (C++代码)浏览:1058 |
整除的尾数 (C语言代码)浏览:814 |
班级人数 (C语言代码)浏览:927 |