BaysideLizard 发表于 2023-11-27 22:02:13

S1E40:高级宏定义--笔记

本帖最后由 BaysideLizard 于 2023-11-27 22:40 编辑

#include <stdio.h>
//鱼C论坛——BaysideLizard写于2023年11月27日

//为了和普通变量区分,宏的名字通常大写
#define PI 3.14
#define R 6371
#define V PI * R * R * R * 4 /3
//带参数的宏定义
#define MAX(x,y) (((x) > (y)) ? (x) : (y))
//为了避免由于运算符优先级造成奇怪的bug
//需要套上很多层括号
//不建议使用宏定义代替函数

int main()
{
    int r;
    float s;

    printf("请输入圆半径r:");
    scanf("%d",&r);
//可以使用#undef PI来终止宏定义的作用域
    s = PI * r * r;
    printf("圆的面积s为%f\n\n",s);

    printf("地球的体积大概是:%.2f",V);

    return 0;
}








运行结果:
请输入圆半径r:3
圆的面积s为28.260000

地球的体积大概是:1082657777102.05
Process returned 0 (0x0)   execution time : 0.446 s
Press any key to continue.









在FishC学C的第22天

FishC_GPT 发表于 2023-11-27 22:02:34

这段代码是一个关于宏定义的示例程序。宏定义是一种预处理指令,可以将一段代码或常量以符号的形式进行替换。在代码中,我们使用了几个宏定义来简化计算和增加代码的可读性。

首先,我们定义了两个常量PI和R,分别表示圆周率和地球的半径。然后,我们使用这两个常量定义了一个表示地球体积的宏V。这样,在代码中我们只需要写V就可以直接使用计算后的体积值。

接下来,我们使用带参数的宏定义MAX来比较两个数的大小,并返回较大的数。这样,我们在代码中只需使用MAX(x, y)就可以得到x和y中较大的一个数。

在代码的主函数中,我们首先接收用户输入的半径值r,然后使用宏定义计算出圆的面积s,并打印出来。最后,我们使用宏V计算出地球的体积并打印出来。

运行结果显示,当输入半径为3时,圆的面积为28.26,并且地球的体积约为1.08 x 10^12。

需要注意的是,在使用宏定义的时候需要注意宏的作用域和运算符优先级的问题。另外,宏定义是在编译前被处理的,所以不能像变量一样随意修改它的值。

在实际编程中,建议根据具体情况慎重选择使用宏定义,因为它们可能会带来一些不易察觉的问题。通常情况下,函数会比宏更安全和可维护。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: S1E40:高级宏定义--笔记