题目:#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)

MAXIMUMMINIMUM 分别用于返回两个数字中的较大值和较小值。在主函数中,通过条件编译指令 #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"。

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

标签: c语言, c语言教程, c语言技术, c语言学习, c语言学习教程, c语言下载, c语言开发, c语言入门教程, c语言进阶教程, c语言高级教程, c语言面试题, c语言笔试题, c语言编程思想, c语言练习, c语言练习题