天天看点

一起talk C栗子吧(第一百六十八回:C语言实例--C语言中的布尔--bool类型)

各位看官们,大家好,上一回中咱们说的是控制终端字符颜色的例子,这一回咱们说的例子是:C语言中的布尔–bool类型 。闲话休提,言归正转。让我们一起talk C栗子吧!

看官们,在数字电路中我们经常会遇到布尔类型,其实在编写软件的过程中也会使用布尔类型。布尔类型的变量只有两种值:真和假。在实际的编程过程中,我们经常定义宏,然后使用1表示真,0表示假。下面是具体的例子:

#define TRUE    1  
#define FALSE   0
           

例子中定义了两个宏,一个是TRUE,它的值是1,表示真;另外一个是FALSE,它的值是0,表示假。这样的代码经常在程序中出现。其实,在咱们前面章回的例子中就经常有这样的代码,可能大家觉得这样的代码已经习以为常了。

有看官说,虽然只有两行代码,但是每次都定义这样的宏也很麻烦呀。这位看官说的对,其实不只你有这样的烦恼,很多人也对此很烦恼。于是C语言把布尔类型当作自己的内嵌类型,也就是说你可以像使用int,char等内嵌类型一样使用布尔类型了。它的使用方法如下:

bool bool_value = true;
           

在使用bool类型时需要包含头文件:

#include<stdbool.h>

,还有一种使用方法如下:

在该方法中可以直接使用_Bool类型,而不需要包含任何头文件。不过我们不推荐这种使用方法。C语言中几乎没有哪个类型前面还有个下划线,看着是多么的不和谐呀。

接下来我们通过具体的例子来说明如何使用布尔类型。

#include<stdio.h>
#include<stdbool.h>

int main()
{
    //_Bool flag = 1;  
    bool flag = true; 
    int index = ;

    while(index-- > flag)
    {
        if(flag)
        {
            printf("flag is: %d \n",flag);
            flag = false;
        }
        else
        {
            printf("flag is: %d \n",flag);
            flag = true;
        }
    }

    return ;
}
           

在上面的例子中,我们定义了布尔类型变量flag,并且给它赋值为true。然后分别以十进制的形式输出它的真值和假值,下面是程序的运行结果:

flag is:    //布尔类型的真值
flag is:    //布尔类型的假值
           

从上面的运行结果中可以看到,布尔类型的值可以转换为十进制的1和0。此外,我们在例子中还对布尔类型的变量和int类型的变量进行大小比较,这说明布尔类型变量可以转换为int类型变量。不过在使用的时候,我们建议使用true和false对布尔类型的变量进行赋值,而不要把int类型变量的值转换布尔类型变量的值。

这时有看官实然说,上面的例子有编译错误。 我想问一下这位看官,你用的是GCC吗?如果不是的话,使用GCC来编译上面的例子,或者把你的编译器升级一下。因为布尔类型是在C99中新增加的类型,C89以及之前的C语言中没有布尔类型。因为一些旧版本的编译器或者不支持C99的编译器不认识布尔类型,所以会有编译错误。

我使用的是GCC(版本为4.8),该版本的GCC支持布尔类型,而且有布尔类型的定义,我们可以打开头文件

:stdbool.h

来看看:

less /usr/lib/gcc/i686-linux-gnu//include/stdbool.h 
           

在终端中运行该命令后,就可以打开该文件,下面是文件中的内容,请大家参考:

/*
 * ISO C Standard:  7.16  Boolean type and values  <stdbool.h>
 */

#ifndef _STDBOOL_H
#define _STDBOOL_H

#ifndef __cplusplus

#define bool    _Bool
#define true    1
#define false   0

#else /* __cplusplus */

/* Supporting <stdbool.h> in C++ is a GCC extension.  */
#define _Bool   bool
#define bool    bool
#define false   false
#define true    true

#endif /* __cplusplus */

/* Signal that all the definitions are present.  */
#define __bool_true_false_are_defined   1

#endif  /* stdbool.h */
           

各位看官,关于C语言中的布尔–bool类型的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解 。

继续阅读