【C语言】高级宏定义

宏定义的实质

再牛逼的宏定义也是机械的替换

宏定义结束不需要 ;(分号)

#define PI 3.14

终止宏定义生效范围

#define PI 3.14

代码块..

#undef PI

mark

不带参数的宏定义

#include <stdio.h>
#define PI 3.14

int main(){
    int r = 6;
    printf("%d 半径圆的面积 %.5f",r,PI * r * r);
    return 0;
}

mark

带参数的宏定义

比较两数字大小

#include <stdio.h>

#define MAX(x, y) ((x) > (y)) ? (x) : (y)  // 这些括号是为了保证 判断正确

int main() {
    int x = 6, y = 10;
    printf("%d  %d  -max-> %d", x, y, MAX(x, y));
    return 0;
}

求平方 (有 BUG )

宏定义只是机械性替换,所以不能代替函数

#include <stdio.h>

#define SQUARE(x) x * x

int main() {
    int x = 6;

    printf("  %d   -平方-> %d\n", x, SQUARE(x));

    printf("%d + 1 -平方-> %d\n", x, SQUARE(x + 1));

    return 0;

}

mark

发表评论 / Comment

用心评论~