首先bool true false為C++中的關鍵字,C語言中默認不支持這幾個字符!
在C89 (ANSI C)標准中沒有定義與布爾類型相關的內容
但在C99標准中新定義了一個新的關鍵字_Bool ,以及新增了一個頭文件 <stdbool.h>規范了布爾類型的操作,方便程序員進行調用!
在<stdbool.h>頭文件中定義了如下內容:
#define bool_Bool
#define false0
#define true1
這樣在支持C99標准的編譯器下只要包含stdbool.h ,就能非常方便的使用我們常用的bool false true來操作布爾類型
但有的編譯器可能不支持C99標准!即無法使用關鍵字_Bool以及可能無法包含stdbool.h頭文件,所以我們常可以自行定義一些布爾類型的操作:
#define bool int
#define true 1
#define false 0
即在不支持C99標准的編譯器中無法使用_Bool以及包含頭文件stdbool.h,在支持C99標准的編譯器中可以無條件使用_Bool,因為它是關鍵字,它的值只能為0或1,以及若想使用bool,false,true則必須需包含頭文件stdbool.h
用如下程序在VS2015中測試:
#include<stdio.h>
int main(void)
{
_Bool a = -112;
printf("%d\n",a);
getchar();
return 0;
}
程序輸出1
即若給a賦值0,則輸出0,若給_Bool 型的a賦值其他的任何值,都會被轉變成1,也即非0都會變成1!
下列程序在VS2015中通過編譯,說明VS2015支持C99標准
#include<stdio.h>
#include<stdbool.h>
int main(void)
{
_Bool a = 1;
bool b = true;
bool c = false;
if (a == true)
{
printf("%d\n", a);
printf("%d\n", b);
printf("%d\n", c);
}
getchar();
return 0;
}