(C语言)宏定义高级用法

(C语言)宏定义高级用法

在c语言中我们常常需要用到宏定义,而宏定义的一些小技巧可以使我们的开发效率更高,但在书本中没有提到,所以写了这篇博客。

1、宏定义的基本用法

使用#define去定义一个常量

#define R 6371

计算圆的体积(例子):

#include 

#define PI 3.14

int main(){
	int r;
    float s;

    printf("请输入圆的半径:");
    scanf("%d",&r);

    s = PI * r * r;
    printf("圆的体积为:%.2f\n",s);
    return 0;
}

运行结果:

(C语言)宏定义高级用法_第1张图片

2、宏定义的进阶用法

使用宏定义进行定义公式

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

计算一个值的平方(例子):

#include 

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

int main(){
    int x;
    printf("请输入一个整数:");
    scanf("%d", &x);

    printf("%d 的平方是:%d\n", x, SQUARE(x));
    return 0;
}

计算结果:

(C语言)宏定义高级用法_第2张图片

3、注意事项

1、在#define PI 3.14的后面不要加结束符;

2、在使用宏定义的进阶用法时需要注意括号的使用,可以看到上一个计算平方的例子,如果我们在定义中不添加括号会怎么样,并将输入代码进行修改,我们可以试试看

计算平方(例子):

#include 

#define SQUARE(x) x * x

int main(){
    int x;
    printf("请输入一个整数:");
    scanf("%d", &x);

    printf("%d 的平方是:%d\n", x, SQUARE(x));
    printf("%d 的平方是:%d\n", x+1, SQUARE(x+1));
    return 0;
}

输出结果:

(C语言)宏定义高级用法_第3张图片
可以从结果中看出输出的结果并不是我们想要的结果,6的平方并不是11而是36,所以是错误的。为什么呢,因为宏定义很笨,他只会把你输入的值替换到公式上并进行计算,所以他的计算不是(x+1)(x+1)而是x+1x+1,所以是5+1*5+1为11,因此在我们使用宏定义的进阶用法时需要注意括号问题并不是括号是无所谓的。所以这里的正确写法应该是 #define SQUARE(x) ((x) * (x))。

计算平方(例子)(修改):

#include 

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

int main(){
    int x;
    printf("请输入一个整数:");
    scanf("%d", &x);

    printf("%d 的平方是:%d\n", x, SQUARE(x));
    printf("%d 的平方是:%d\n", x+1, SQUARE(x+1));
    return 0;
}

输出结果:

(C语言)宏定义高级用法_第4张图片
这样就得到正确的输出拉
谢谢你观看到这里,如果觉得写得好的话给我点个赞把~(^ _ ^)∠※

你可能感兴趣的:(C语言,c语言)