天天看點

一起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類型的例子咱們就說到這裡。欲知後面還有什麼例子,且聽下回分解 。

繼續閱讀