1. 程式人生 > >C語言中的布爾值

C語言中的布爾值

int 解決 邏輯 n! 變量 結束 title 最新 復制代碼

C語言的布爾類型

  在C語言標準(C89)沒有定義布爾類型,所以C語言判斷真假時以0為假,非0為真。所以我們通常使用邏輯變量的做法:

技術分享圖片
//定義一個int類型變量,當變量值為0時表示false,值為1時表示true
int flag;
flag = 0;
//......
flag = 1;

if( flag )
{
//......
}
技術分享圖片

  

  但這種做法不直觀,而且沒有明確flag一定是布爾值。所以我們又借助C語言的宏定義:

技術分享圖片
//宏定義布爾類型
#define BOOL int
#define TRUE 1
#define FALSE 0

//定義一個布爾變量
BOOL flag = FALSE;
技術分享圖片

  這種方法雖然直觀,但依然是換湯不換藥,變量flag在編譯器看來依然是int類型。

  新版本總會改進一些不好的地方,所以在最新的C語言標準(C99)解決了布爾類型的問題。C99提供了_Bool 型,所以布爾類型可以聲明為 _Bool flag。

  _Bool依然仍是整數類型,但與一般整型不同的是,_Bool變量只能賦值為0或1,非0的值都會被存儲為1。

  C99還提供了一個頭文件 <stdbool.h> 定義了bool代表_Bool,true代表1,false代表0。只要導入 stdbool.h ,就能非常方便的操作布爾類型了。

技術分享圖片
//導入 stdbool.h 來使用布爾類型
#include <stdbool.h>
#include <stdio.h>

//計算n!,n的值在main中定義
int main(void)
{
int n = 10; //計算疊乘數
int sum = 1; //用來存放疊乘的結果
bool flag = false; //疊乘標記

int num = n; //循環次數
while( !flag )
{
sum = sum * (num--);
//當num=1時結束循環
if( num == 1)
{
flag = true;
}
}
printf ("%d的疊乘值為 %d \n", n, sum);
return 0;
}

C語言中的布爾值