Coutnut


私信TA

用户名:Coutnut

访问量:384

签 名:

等  级
排  名 9931
经  验 1122
参赛次数 0
文章发表 4
年  龄 0
在职情况 学生
学  校 whut
专  业

  自我简介:

解题思路:


宏定义的本质只是替换,类似内联函数。所以实际上有无参数,对预处理器和编译器来讲,都是一样的,所谓参数只是增强人类观感和提高易读性。

参考代码即可看到,实际上,只需要是宏定义 ||字符序列|| 中所用到的参数,在 ||标识符||  之前出现,对于编译器来讲,就是一个符合规则的宏定义。否则的话,就出现了在声明之前调用变量的情况。


可以试一试把宏定义全部替换成目标字符序列,再看一看代码有什么不一样。


参考代码中未有参数,主函数中仅声明了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 人评分

  评论区

  • «
  • »