1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C语言 define 定义函数 - C语言零基础入门教程

C语言 define 定义函数 - C语言零基础入门教程

时间:2018-12-22 19:57:24

相关推荐

C语言 define 定义函数 - C语言零基础入门教程

目录

一.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<b)?a:b //取两个数最小值

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

二.define 定义函数

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

/******************************************************************************************///@Author:猿说编程//@Blog(个人博客地址): //@File:C语言教程 - C语言 define定义函数//@Time:/06/27 08:00//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!/******************************************************************************************/#include <stdio.h>#include <stdlib.h>#include <string>#define RESULT (x*2+5)int main(){int x = 10;printf("RESULT是:%d\n",RESULT);return 0;}/*RESULT是:25*/

2.define 定义带参数的函数

/******************************************************************************************///@Author:猿说编程//@Blog(个人博客地址): //@File:C语言教程 - C语言 define定义函数//@Time:/06/27 08:00//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!/******************************************************************************************/#include <stdio.h>#include <stdlib.h>#include <string>#define MAX(a,b) (a>b)?a:b //取两个数最大值#define MIN(a,b) (a<b)?a:b //取两个数最小值int main(){printf("最大值是:%d\n",MAX(5,100));printf("最小值是:%d\n",MIN(5,100));return 0;}/*最大值是:100最小值是:5*/

三.define 定义函数陷阱

1.define 函数陷阱一

/******************************************************************************************///@Author:猿说编程//@Blog(个人博客地址): //@File:C语言教程 - C语言 define定义函数//@Time:/06/27 08:00//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!/******************************************************************************************/#include <stdio.h>#include <stdlib.h>#include <string>#define RESULT(x) x*xint main(){printf("RESULT是:%d\n",RESULT(2));printf("RESULT是:%d\n",RESULT(2+1));return 0;}/*RESULT是:4RESULT是:5*/

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

#define RESULT(x) x*xRESULT(2) 等价 2*2 = 4RESULT(2+1) 等价 2+1*2+1 = 5

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

/******************************************************************************************///@Author:猿说编程//@Blog(个人博客地址): //@File:C语言教程 - C语言 define定义函数//@Time:/06/27 08:00//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!/******************************************************************************************/#include <stdio.h>#include <stdlib.h>#include <string>#define RESULT(x) (x)*(x) //在参数两侧加括号int main(){printf("RESULT是:%d\n",RESULT(2));printf("RESULT是:%d\n",RESULT(2+1)); //等价 (2+1)*(2+1) = 9return 0;}/*RESULT是:4RESULT是:9*/

3.define 函数陷阱二

/******************************************************************************************///@Author:猿说编程//@Blog(个人博客地址): //@File:C语言教程 - C语言 define定义函数//@Time:/06/27 08:00//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!/******************************************************************************************/#include <stdio.h>#include <stdlib.h>#include <string>#define RESULT(x) (x)*(x)int main(){printf("RESULT是:%d\n",RESULT(2));printf("RESULT是:%d\n",9/RESULT(2+1));return 0;}/*RESULT是:4RESULT是:9*/

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

#define RESULT(x) x*xRESULT(2) 等价 2*2 = 49/RESULT(2+1) 等价 9/(2+1)*(2+1) = 5

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

/******************************************************************************************///@Author:猿说编程//@Blog(个人博客地址): //@File:C语言教程 - C语言 define定义函数//@Time:/06/27 08:00//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!/******************************************************************************************/#include <stdio.h>#include <stdlib.h>#include <string>#define RESULT(x) ((x)*(x)) //在参数两侧加括号,整个表达式也需要加上括号int main(){printf("RESULT是:%d\n",RESULT(2));printf("RESULT是:%d\n",9/RESULT(2+1));return 0;}/*RESULT是:4RESULT是:1*/

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

四.猜你喜欢

C 语言 数组下标越界和内存溢出区别C 语言 指针声明和定义C 语言 指针 p++ / p–C 语言p++/§++/_(p++)/_p++C 语言 使用指针遍历数组C 语言 指针和数组区别C 语言 指针数组和数组指针区别C 语言 空指针 NULLC 语言 void 指针C 语言 野指针C 语言 函数值传递和址传递C 语言 函数缺省参数C 语言 函数不定长参数C 语言 函数指针C 语言 指针函数C 语言 回调函数 callbackC 语言 typedefC 语言 define 定义常量C 语言 define 防止头文件重复包含C 语言 define 定义函数

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。