二.define 定义函数

二.define 定义函数

目录

一.define 简介

二.define 定义函数

1.define 定义不带参数的函数

2.define 定义带参数的函数

三.define 定义函数陷阱

1.define 函数陷阱一

2.define 函数陷阱一解决办法

3.define 函数陷阱二

4.define 函数陷阱二解决办法

四.猜你喜欢

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门

一.define 简介

C 语言中,除了可以用 #define 定义一个标识符来表示一个常量,还可以用 #define 定义函数,例如:

//定义常量

#define MAX_VALUE 100 //定义整型变量MAX_VALUE值为100

#define USER_NAME "huge" //定义字符串变量USER_NAME值为"huge"

#define PI 3.1415926 //定义浮点数变量PI值为3.1415926

//定义函数

#define MAX(a,b) (a>b)?a:b //取两个数最大值

#define MIN(a,b) (a

凡是以 # 开头的均为预处理指令,预处理又叫预编译。预编译不是编译,而是编译前的处理。这个操作是在正式编译之前由系统自动完成的。

二.define 定义函数

1.define 定义不带参数的函数

//

//@Author:猿说编程

//@Blog(个人博客地址): www.codersrc.com

//@File:C语言教程 - C语言 define定义函数

//@Time:2021/06/27 08:00

//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

//

include

include

include

define RESULT (x*2+5)

int main()

{

int x = 10;

printf("RESULT是:%d\n",RESULT);

return 0;

}

/*

RESULT是:25

*/

2.define 定义带参数的函数

//

//@Author:猿说编程

//@Blog(个人博客地址): www.codersrc.com

//@File:C语言教程 - C语言 define定义函数

//@Time:2021/06/27 08:00

//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

//

include

include

include

define MAX(a,b) (a>b)?a:b //取两个数最大值

define MIN(a,b) (a

int main()

{

printf("最大值是:%d\n",MAX(5,100));

printf("最小值是:%d\n",MIN(5,100));

return 0;

}

/*

最大值是:100

最小值是:5

*/

三.define 定义函数陷阱

1.define 函数陷阱一

//

//@Author:猿说编程

//@Blog(个人博客地址): www.codersrc.com

//@File:C语言教程 - C语言 define定义函数

//@Time:2021/06/27 08:00

//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

//

include

include

include

define RESULT(x) x*x

int main()

{

printf("RESULT是:%d\n",RESULT(2));

printf("RESULT是:%d\n",RESULT(2+1));

return 0;

}

/*

RESULT是:4

RESULT是:5

*/

很蒙蔽??为什么第二个计算结果不是9,而是5??

define RESULT(x) x*x

RESULT(2) 等价 22 = 4

RESULT(2+1) 等价 2+12+1 = 5

2.define 函数陷阱一解决办法

//

//@Author:猿说编程

//@Blog(个人博客地址): www.codersrc.com

//@File:C语言教程 - C语言 define定义函数

//@Time:2021/06/27 08:00

//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

//

#include

#include

#include

define RESULT(x) (x)*(x) //在参数两侧加括号

int main()

{

printf("RESULT是:%d\n",RESULT(2));

printf("RESULT是:%d\n",RESULT(2+1)); //等价 (2+1)(2+1) = 9

return 0;

}

/

RESULT是:4

RESULT是:9

*/

3.define 函数陷阱二

//

//@Author:猿说编程

//@Blog(个人博客地址): www.codersrc.com

//@File:C语言教程 - C语言 define定义函数

//@Time:2021/06/27 08:00

//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

//

include

include

include

define RESULT(x) (x)*(x)

int main()

{

printf("RESULT是:%d\n",RESULT(2));

printf("RESULT是:%d\n",9/RESULT(2+1));

return 0;

}

/*

RESULT是:4

RESULT是:9

*/

很蒙蔽??为什么第二个计算结果不是1,而是9??

define RESULT(x) x*x

RESULT(2) 等价 22 = 4

9/RESULT(2+1) 等价 9/(2+1)(2+1) = 5

4.define 函数陷阱二解决办法

//

//@Author:猿说编程

//@Blog(个人博客地址): www.codersrc.com

//@File:C语言教程 - C语言 define定义函数

//@Time:2021/06/27 08:00

//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

//

include

include

include

define RESULT(x) ((x)*(x)) //在参数两侧加括号,整个表达式也需要加上括号

int main()

{

printf("RESULT是:%d\n",RESULT(2));

printf("RESULT是:%d\n",9/RESULT(2+1));

return 0;

}

/*

RESULT是:4

RESULT是:1

*/

以上讨论说明,对于宏定义,保险的做法是不仅应在参数两侧加括号,也应在整个字符串外加括号。

四.猜你喜欢

C 语言 数组下标越界和内存溢出区别

C 语言 指针声明和定义

C 语言 指针 p++ / p–

C 语言 p++/§++/_(p++)/_p++

C 语言 使用指针遍历数组

C 语言 指针和数组区别

C 语言 指针数组和数组指针区别

C 语言 空指针 NULL

C 语言 void 指针

C 语言 野指针

C 语言 函数值传递和址传递

C 语言 函数缺省参数

C 语言 函数不定长参数

C 语言 函数指针

C 语言 指针函数

C 语言 回调函数 callback

C 语言 typedef

C 语言 define 定义常量

C 语言 define 防止头文件重复包含

C 语言 define 定义函数

未经允许不得转载:猿说编程 » C 语言 define 定义函数

本文由博客 - 猿说编程 猿说编程 发布!

相关推荐

曾被国人强烈抵制的乐天集团,在退出中国市场后,如今怎么样了
2025英语考试AI软件Top8榜单出炉!实测口碑炸裂,差评清零真香警告
letting go简体中文怎么写
365bet线上足球

letting go简体中文怎么写

📅 09-11 👁️ 393
ChinaJoy 2024:永劫光遇等40+款鸿蒙原生游戏首次亮相 技术赋能精品游戏体验
QQ空间更新教程大全
365足球体育亚洲版

QQ空间更新教程大全

📅 07-30 👁️ 9512
中国黑鹳山河大漠间的隐者
365足球体育亚洲版

中国黑鹳山河大漠间的隐者

📅 10-24 👁️ 793
🐕 狗 表情符号
365bet线上足球

🐕 狗 表情符号

📅 08-08 👁️ 4064
合肥城市通卡股份有限公司
365足球体育亚洲版

合肥城市通卡股份有限公司

📅 01-27 👁️ 8285
智商不够,情商来凑。高情商的表现,你有几种?
365足球体育亚洲版

智商不够,情商来凑。高情商的表现,你有几种?

📅 06-11 👁️ 5500