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;
}
程序运行后,控制台输出如下图所示:
我们首先定义了一个宏函数 MAX,该宏函数接受两个参数,返回这两个参数的最大值,接着,我们再次定义了一个宏函数,该函数接受两个参数, 返回两个参数的最小值。
最后,我们分别调用了这两个宏函数,求出了两个数中的最大值和最小值。
定义 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;
}
程序运行后,控制台输出如下图所示:
我们首先定义了一个宏函数 UPCASE,该宏函数接受一个参数,返回这个参数的大写形式,接着,我们再次定义了一个宏函数,该函数接受一个参数, 返回这个参数的小写字符形式。
最后,我们分别调用了这两个宏函数,求出了两个字符的大写形式和小写形式。
定义 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;
}
程序运行后,控制台输出如下图所示:
我们定义了一个 ISDIGIT 宏函数,该宏函数接受一个参数,判断该参数是否是数字字符。
定义 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;
}
程序运行后,控制台输出如下图所示:
我们定义了一个 ARR_SIZE 宏函数,该宏函数接受一个参数,实现了计算 数组 的长度。
C 语言中的宏函数,也可以叫做带参数的宏, C 语言的宏函数跟普通函数类似,只不错是宏函数的参数没有类型。