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"。
通过使用条件编译指令,程序可以根据宏的定义情况执行不同的代码,从而实现了根据条件选择不同的操作。