【define】你知道C语言中define的作用吗?

文章目录

  • 前言
  • 一、define是什么?
  • 二、define的作用
    • 1.define定义符号
    • 2.define定义宏
  • 总结


前言

define是编程语言中一种重要的关键字,今天我为你们讲解其在C语言中的作用


一、define是什么?

define的中文意思是定义,C语言中预处理命令的一种。分为无参宏定义和带参宏定义:
无参宏定义的一般为:#define 定义符号 符号无参数;
带参宏定义一般为;#define 定义 宏 宏有参数。

二、define的作用

1.define定义符号

代码如下(示例):

#include
#define max 10
int main()
{
	int max = 10;
	int arr[max] = { 0 };
	printf("%d", max);
	return 0;
}

此代码运行结果:
【define】你知道C语言中define的作用吗?_第1张图片
我们再来看一段代码
代码如下(示例):

#include
//#define max 10
int main()
{
	int max = 10;
	int arr[max] = { 0 };
	printf("%d", max);
	return 0;
}

此代码运行结果:
【define】你知道C语言中define的作用吗?_第2张图片
从这两段代码可以看出define定义变量不是简单的定义,而是文本的替换。
#define使max直接替换成100所以第一段代码中数组可以正常分配,
而第二段代码中max虽然定义了但是不是替换,它还是变量所以数组不能正常分配。

2.define定义宏

代码如下(示例):

#include
#define add(x,y) x+y
int main()
{
	int a = 10;
	int b = 15;
	add(a, b);
	printf("%d", add(a, b));
	return 0;
}

此代码运行结果:
【define】你知道C语言中define的作用吗?_第3张图片
这就是代码定义宏也就是定义函数,但是代码定义宏还有一些细节让我再给你们一段代码看一下
代码如下(示例):

#include
#define add(x,y) x+y
int main()
{
	int a = 10;
	int b = 15;
	add(a, b);
	printf("%d",4* add(a, b));
	return 0;
}

此代码运行结果:
【define】你知道C语言中define的作用吗?_第4张图片
这是就会有人产生疑惑了这代码运行结果不应该是100吗,为什么会是55?
这是因为define定义函数(宏)的时候运算是按顺序进行的
所以运算顺序是4*x+y,因此代码的结果才会是55
那有些人就会问那我就要100呢,那我们必须在define定义宏的后面x+y加上一个大括号(x+y)这样代码运行结果就会是100
代码如下(示例):

#include
#define add(x,y) (x+y)
int main()
{
	int a = 10;
	int b = 15;
	add(a, b);
	printf("%d",4* add(a, b));
	return 0;
}

此代码运行结果:
【define】你知道C语言中define的作用吗?_第5张图片
这便是我们想要的代码运行结果


总结

1.define定义符号
define定义符号是直接把符号替换成另一个值,与正常的定义不同。
2.define定义宏
define定义函数与定义符号一样,只不过是用一个表达式代替了值。
要注意的一点是define定义函数时表达式与其它数相加减乘除是按顺序进行计算,除非给表达式加一个()。

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