高级宏定义

 不带参数的宏定义

 在单片机教程中就已经学到了;

 用法1:

#include <stdio.h>

#define PI 3.14//注意不要加;

int main(void)
{
	int r;
	float s;

	printf("请输入圆的半径:");
	scanf_s("%d", &r);
	s = r * r * PI;
	printf("圆的面积是:%.2f", s);
	return 0;
}

还可以嵌套:

#include <stdio.h>

#define PI 3.14//注意不要加;
#define R 6371
#define V PI * R * R * R * 4 / 3

int main(void)
{
	printf("地球的体积约为:%.2f", V);

	return 0;
}

带参数的宏定义 

#include <stdio.h>

#define MAX(x,y) (((x) > (y)) ? (x) : (y))

int main(void)
{
	int x, y;
	printf("请输入两个整数:");
	scanf_s("%d %d", &x, &y);
	printf("更大的数字是:%d", MAX(x, y));
	return 0;
}

 注意:MAX和(形参)之间不可以有任何空格。

在进行这一步时要注意括号的使用,尽量把每个形参用括号括住,因为这仅仅是把形参简单替换成实参。

例子:

#include <stdio.h>

#define SQUARE(x) x * x

int main(void)
{
	int x;
	printf("请输入一个整数:");
	scanf_s("%d", &x);
	printf("%d的平方是%d\n",x, SQUARE(x));
	printf("%d的平方是%d",x + 1, SQUARE(x + 1));
	return 0;
}

在不加括号括住形参的情况下,因为把形参简单替换为实参的特性,导致结果:

 加括号后:

#include <stdio.h>

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

int main(void)
{
	int x;
	printf("请输入一个整数:");
	scanf_s("%d", &x);
	printf("%d的平方是%d\n",x, SQUARE(x));
	printf("%d的平方是%d",x + 1, SQUARE(x + 1));
	return 0;
}

但是还是不建议使用这种宏定义去替代该有的函数,这会导致一些BUG

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值