C語言的布爾類型

來源:互聯網
上載者:User

  在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;
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.