解题思路:
宏定义的本质只是替换,类似内联函数。所以实际上有无参数,对预处理器和编译器来讲,都是一样的,所谓参数只是增强人类观感和提高易读性。
参考代码即可看到,实际上,只需要是宏定义 ||字符序列|| 中所用到的参数,在 ||标识符|| 之前出现,对于编译器来讲,就是一个符合规则的宏定义。否则的话,就出现了在声明之前调用变量的情况。
可以试一试把宏定义全部替换成目标字符序列,再看一看代码有什么不一样。
参考代码中未有参数,主函数中仅声明了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语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:1334 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:636 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:863 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:934 |
printf基础练习2 (C语言代码)浏览:653 |
K-进制数 (C语言描述,蓝桥杯)浏览:955 |
1013题解浏览:596 |
字符串的输入输出处理 (C语言代码)浏览:1085 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:569 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:420 |