各位看官們,大家好,上一回中咱們說的是控制終端字元顔色的例子,這一回咱們說的例子是: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類型的例子咱們就說到這裡。欲知後面還有什麼例子,且聽下回分解 。