首页 > 编程笔记 > C语言笔记 阅读:15

C语言#if、#elif、#else和#endif条件编译的用法(附带实例)

C 语言预处理器提供了条件编译功能。一般情况下,源程序中的所有行都会参加编译。如果希望其中一部分内容只在满足一定条件时才进行编译,这时就需要使用条件编译命令。

使用条件编译可以非常方便地处理程序的调试版本和正式版本,同时还会增强程序的可移植性。

C语言#if命令

#if 的基本含义是:如果 #if 命令后的参数表达式为真,则编译 #if 到 #endif 之间的程序段,否则跳过这段程序。#endif 命令用来表示 #if 段的结束。

#if 命令的一般形式如下:
#if 常数表达式
    语句段
#endif
如果常数表达式为真,则该段程序被编译,否则跳过该段程序(不编译)。

【实例】用 #if 和 #define 实现与 50 进行比较。如果等于 50,就计算 i=i+50;如果大于 50,就计算 i++;如果小于 50,就计算 i--。具体代码如下:
#include<stdio.h>
#define NUM 50
main()
{
    int i=0;
    #if NUM>50     /*判断 NUM 是否大于 50 */
        i++;
    #endif
    #if NUM==50
        i=i+50;
    #endif
    #if NUM<50
        i--;
    #endif
    printf("目前的值是:%d\n",i);
}
程序运行结果为:

目前的值是:50


若将语句“#define NUM 50”改为“#define NUM 10”,则运行结果为:

目前的值是:-1


若改为“#define NUM 100”,运行结果为:

目前的值是:1

C语言else命令

#else 的作用是为 #if 为假时提供另一种选择,其作用和前面讲过的条件判断中的 else 相近。

【实例】判断是否能被 9527 整除的偶数。使用 #if 与 #else 语句实现判断功能,代码如下:
#include "stdio.h"
#define input 19054    /*定义宏,用 input 替代 19054*/
int main()
{
    printf("当前是:%d\n", input);
    #if input>0
        if(input % 9527==0 && input %2 == 0)
            printf("能被 9527 整除的偶数\n");
    #else
        #if input<0
            printf("当前为负数:%d\n", input);
        #else
            printf("不能被 9527 整除的偶数,此时数据为:%d\n", input);
        #endif
    #endif
    return 0;
}
程序运行结果为:

当前是:19054
能被 9527 整除的偶数

C语言elif命令

#elif 的一般形式如下:
#if 表达式 1
    语句段 1
#elif 表达式 2
    语句段 2
#elif 表达式 3
    语句段 3
#elif 表达式 n
    语句段 n
#endif

【实例】判断输入的体温是否为正常体温。利用 #elif 判断输入的体温是否为正常体温。代码如下:
#include<stdio.h>
#define NUM 50
main()
{
    int i=0;
    #if NUM>50
        i++;
    #elif NUM==50
        i=i+50;
    #else
        i--;
    #endif
    printf("i is:%d\n",i);
}
运行结果为:

i is:50

相关文章