C语言宏函数

C语言宏函数教程

C 语言 中的宏函数,也可以叫做带参数的 , C 语言的宏函数跟 普通函数 类似,只不错是宏函数的参数没有 类型

案例

C语言宏函数求最大值和最小值

定义 C 语言宏函数,实现求最大值和最小值

#include <stdio.h> #define MAX(x, y) (((x) > (y)) ? (x) : (y)) #define MIN(x, y) (((x) < (y)) ? (x) : (y)) int main() { printf("嗨客网(www.haicoder.net)\n\n"); int x = 10; int y = 30; int max = MAX(x, y); int min = MIN(x, y); printf("Max = %d, Min = %d\n", max, min); return 0; }

程序运行后,控制台输出如下图所示:

09_c语言宏函数.png

我们首先定义了一个宏函数 MAX,该宏函数接受两个参数,返回这两个参数的最大值,接着,我们再次定义了一个宏函数,该函数接受两个参数, 返回两个参数的最小值。

最后,我们分别调用了这两个宏函数,求出了两个数中的最大值和最小值。

C语言宏函数字符转换

定义 C 语言宏函数,实现转换字符的大小写

#include <stdio.h> #define UPCASE(c) (((c) >= 'a' && (c) <= 'z') ? ((c) + 'A' - 'a') : (c)) #define LOCASE(c) (((c) >= 'A' && (c) <= 'Z') ? ((c) + 'a' - 'A') : (c)) int main() { printf("嗨客网(www.haicoder.net)\n\n"); char ch1 = 'a'; char ch2 = 'B'; char upCh1 = UPCASE(ch1); char loCh2 = LOCASE(ch2); printf("ch1 = %c, ch2 = %c\n", ch1, ch2); printf("upCh1 = %c, loCh2 = %c\n", upCh1, loCh2); return 0; }

程序运行后,控制台输出如下图所示:

10_c语言宏函数.png

我们首先定义了一个宏函数 UPCASE,该宏函数接受一个参数,返回这个参数的大写形式,接着,我们再次定义了一个宏函数,该函数接受一个参数, 返回这个参数的小写字符形式。

最后,我们分别调用了这两个宏函数,求出了两个字符的大写形式和小写形式。

C语言宏函数判断数字

定义 C 语言宏函数,实现判断字符是否是十进制数字

#include <stdio.h> #define ISDIGIT(c) ((c) >= '0' && (c) <= '9') int main() { printf("嗨客网(www.haicoder.net)\n\n"); char ch1 = 'a'; char ch2 = '8'; int isDigit1 = ISDIGIT(ch1); int isDigit2 = ISDIGIT(ch2); printf("isDigit1 = %d, isDigit2 = %d\n", isDigit1, isDigit2); return 0; }

程序运行后,控制台输出如下图所示:

11_c语言宏函数.png

我们定义了一个 ISDIGIT 宏函数,该宏函数接受一个参数,判断该参数是否是数字字符。

C语言宏函数返回数组个数

定义 C 语言宏函数,实现返回数组的元素个数

#include <stdio.h> #define ARR_SIZE(arr) (sizeof((arr)) / sizeof((arr[0]))) int main() { printf("嗨客网(www.haicoder.net)\n\n"); char arr1[10]; int arr2[20]; int arrSize1 = ARR_SIZE(arr1); int arrSize2 = ARR_SIZE(arr2); printf("arrSize1 = %d, arrSize2 = %d\n", arrSize1, arrSize2); return 0; }

程序运行后,控制台输出如下图所示:

12_c语言宏函数.png

我们定义了一个 ARR_SIZE 宏函数,该宏函数接受一个参数,实现了计算 数组 的长度。

C语言宏函数教程总结

C 语言中的宏函数,也可以叫做带参数的宏, C 语言的宏函数跟普通函数类似,只不错是宏函数的参数没有类型。