C语言练习题-C语言练习题实例49
题目:#if
、#ifdef
和 #ifndef
的综合应用。
程序分析:无。
实例
#include <stdio.h>
#define MAX
#define MAXIMUM(x, y) ((x) > (y)) ? (x) : (y)
#define MINIMUM(x, y) ((x) > (y)) ? (y) : (x)
int main() {
int a = 10, b = 20;
#ifdef MAX
printf("更大的数字是 %d\n", MAXIMUM(a, b));
#else
printf("更小的数字是 %d\n", MINIMUM(a, b));
#endif
#ifndef MIN
printf("更小的数字是 %d\n", MINIMUM(a, b));
#else
printf("更大的数字是 %d\n", MAXIMUM(a, b));
#endif
#undef MAX
#ifdef MAX
printf("更大的数字是 %d\n", MAXIMUM(a, b));
#else
printf("更小的数字是 %d\n", MINIMUM(a, b));
#endif
#define MIN
#ifndef MIN
printf("更小的数字是 %d\n", MINIMUM(a, b));
#else
printf("更大的数字是 %d\n", MAXIMUM(a, b));
#endif
return 0;
}
以上实例输出结果为:
更大的数字是 20
更小的数字是 10
更小的数字是 10
更大的数字是 20
在该程序中,使用了 #define
命令定义了两个宏:
#define MAX
#define MAXIMUM(x, y) ((x) > (y)) ? (x) : (y)
#define MINIMUM(x, y) ((x) > (y)) ? (y) : (x)
宏 MAXIMUM
和 MINIMUM
分别用于返回两个数字中的较大值和较小值。在主函数中,通过条件编译指令 #ifdef
、#ifndef
和 #if
控制了输出的结果。
- 第一次
#ifdef MAX
成立,执行printf("更大的数字是 %d\n", MAXIMUM(a, b));
,输出结果为 "更大的数字是 20"。 - 第一次
#ifndef MIN
成立,执行printf("更小的数字是 %d\n", MINIMUM(a, b));
,输出结果为 "更小的数字是 10"。 #undef MAX
取消了宏MAX
的定义。- 第二次
#ifdef MAX
不成立,执行printf("更小的数字是 %d\n", MINIMUM(a, b));
,输出结果为 "更小的数字是 10"。 #define MIN
定义了宏MIN
。- 第二次
#ifndef MIN
不成立,执行printf("更大的数字是 %d\n", MAXIMUM(a, b));
,输出结果为 "更大的数字是 20"。
通过使用条件编译指令,程序可以根据宏的定义情况执行不同的代码,从而实现了根据条件选择不同的操作。