欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-05-25 12:21:36
各位看官们,大家好,上一回中咱们说的是控制终端字符颜色的例子,这一回咱们说的例子是:C语言中的布尔–bool类型 。闲话休提,言归正转。让我们一起talk C栗子吧...

各位看官们,大家好,上一回中咱们说的是控制终端字符颜色的例子,这一回咱们说的例子是: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,还有一种使用方法如下:

bool _Bool_value = 1;

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

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

#include
#include

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

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

    return 0;
}

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

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

从上面的运行结果中可以看到,布尔类型的值可以转换为十进制的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/4.8/include/stdbool.h 

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

/*
 * ISO C Standard:  7.16  Boolean type and values  
 */

#ifndef _STDBOOL_H
#define _STDBOOL_H

#ifndef __cplusplus

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

#else /* __cplusplus */

/* Supporting  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类型的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解 。