您的位置:

C++宏定义详解

一、C 宏定义

#define PI 3.14159

int main()
{
    double r = 5;
    double area = PI * r * r;
    return 0;
}

宏定义是一种预处理指令,用来在代码中定义一个常量或者一个简单的函数。在C++中,宏定义使用#define关键字,其语法为#define <宏名> <替换内容>。宏定义可以定义一个或多个参数,类似于函数的形式参数,在宏展开的时候可以被替换成实际参数。

在上面的示例中,我们使用宏定义定义了一个常量PI,并在主函数中使用了宏定义中的值,计算圆的面积。由于宏定义只是简单地进行文本替换,因此可以提高代码的可读性和可维护性。

二、C 宏定义与数字判断

#include 

#define IS_EVEN(x) ((x % 2) == 0)

int main()
{
    int num = 4;
    if (IS_EVEN(num))
    {
        printf("%d is even", num);
    }
    return 0;
}

  

宏定义可以用来进行数字判断,例如判断一个数是否为偶数。在上述示例中,我们使用宏定义IS_EVEN(x)来判断一个数x是否为偶数,如果是则返回1,否则返回0。在主函数中,我们使用if语句来判断num是否为偶数,如果是则输出“4 is even”。

三、C 宏定义使用

#define MAX(a, b) ((a > b) ? a : b)

int main()
{
    int x = 10, y = 20;
    int max_num = MAX(x, y);
    return 0;
}

宏定义可以用来定义简单的功能函数,例如比较取最大值。在上述示例中,我们使用宏定义MAX(a, b)来比较a和b的大小,返回较大者。在主函数中,我们定义了两个变量x和y,使用MAX宏定义来获取两者之间的最大值。

四、C 宏定义 递归

#define FACTORIAL(x) ((x == 0) ? 1 : x * FACTORIAL(x - 1))

int main()
{
    int num = 6;
    int factorial = FACTORIAL(num);
    return 0;
}

宏定义也可以进行递归实现,例如求阶乘。在上述示例中,我们使用宏定义FACTORIAL(x)来求x的阶乘。当x等于0时,返回1;否则返回x与FACTORIAL(x-1)的乘积。在主函数中,我们定义了一个变量num,使用FACTORIAL宏定义求num的阶乘。

五、C 宏定义函数

#define SQUARE(x) ((x) * (x))

int main()
{
    int num = 5;
    int square = SQUARE(num);
    return 0;
}

宏定义还可以定义函数。在上述示例中,我们使用宏定义SQUARE(x)来计算x的平方。在主函数中,我们定义了一个变量num,使用SQUARE宏定义计算num的平方。

六、C 宏定义比较

#define EQUAL(x, y) ((x) == (y))

int main()
{
    int num1 = 5, num2 = 5;
    if (EQUAL(num1, num2))
    {
        printf("%d is equal to %d", num1, num2);
    }
    return 0;
}

宏定义可以用来比较两个值是否相等。在上述示例中,我们使用宏定义EQUAL(x, y)比较x和y是否相等,如果相等则返回1,否则返回0。在主函数中,我们使用if语句来判断num1和num2是否相等,如果是则输出“5 is equal to 5”。

七、C宏定义吧

#define TRUE 1
#define FALSE 0

int main()
{
    if (TRUE)
    {
        printf("TRUE");
    }
    if (FALSE)
    {
        printf("FALSE");
    }
    return 0;
}

宏定义可以用来定义布尔类型的常量。在上述示例中,我们定义了TRUE和FALSE两个常量,分别赋值为1和0。在主函数中,我们使用if语句来判断常量的值,并输出相应的结果。

八、C 宏定义的值

#define NUM 10

int main()
{
    int arr[NUM] = {0};
    for (int i = 0; i < NUM; i++)
    {
        arr[i] = i + 1;
    }
    return 0;
}

宏定义的值可以用来定义数组的大小等常量。在上述示例中,我们使用宏定义NUM来定义数组的大小为10。在主函数中,我们定义了一个大小为NUM的数组,并使用for循环给数组赋初值。

九、C 宏定义 值比较

#define MIN(a, b) ((a < b) ? a : b)
#define MAX(a, b) ((a > b) ? a : b)

int main()
{
    int x = 5, y = 10;
    int min_num = MIN(x, y);
    int max_num = MAX(x, y);
    if (MIN(2 * x, y) == 2 * x)
    {
        printf("2x is smaller than y");
    }
    return 0;
}

宏定义可以用来进行值比较,例如获取最小值和最大值。在上述示例中,我们分别使用宏定义MIN(a, b)和MAX(a, b)来获取两个数的最小值和最大值。同时,我们也可以使用宏定义进行值比较,例如if语句中的条件判断。

十、C 宏定义多重替换

#define ADD(x, y) ((x) + (y))
#define ADD_ONE(x) ADD((x), 1)

int main()
{
    int num = 5;
    int result1 = ADD(num, 3);
    int result2 = ADD_ONE(num);
    return 0;
}

宏定义可以进行多重替换。在上述示例中,我们使用宏定义ADD(x, y)定义了一个加法函数,使用ADD_ONE(x)来进行num+1的操作,实现了对宏定义的嵌套使用。