C語言中的布林值



intcharfloat型別不同,ANSI C標準沒有內建或主要的布林型別。布林值或bool資料通常指的是可以儲存兩個二進位制值之一的資料:true或false(或yes/no,on/off等)。即使C語言中沒有bool型別,您也可以藉助enum型別實現布林值的特性。

符合C99標準或更高版本的C編譯器的新版本支援bool型別,該型別已在標頭檔案stdbool.h中定義。

使用enum在C語言中實現布林型別

enum型別將使用者定義的識別符號賦給整型常量。我們可以定義一個列舉型別,其中true和false作為識別符號,其值為1和0。

示例

1或任何其他非0數字表示true,而0表示false。

#include <stdio.h>

int main (){

   enum bool {false, true};
   enum bool x = true;
   enum bool y = false;

   printf ("%d\n", x);
   printf ("%d\n", y);
}

輸出

執行程式碼並檢查其輸出 -

1
0

將typedef enum 定義為BOOL

為了使其更簡潔,我們可以使用typedef關鍵字將enum bool稱為BOOL。

示例1

請看下面的例子 -

#include <stdio.h>

int main(){

   typedef enum {false, true} BOOL;

   BOOL x = true;
   BOOL y  = false;

   printf ("%d\n", x);
   printf ("%d\n", y);
}

在這裡,您也將獲得相同的輸出 -

輸出

1
0

示例2

我們甚至可以在決策或迴圈語句中使用列舉常量 -

#include <stdio.h>

int main(){

   typedef enum {false, true} BOOL;

   int i = 0;

   while(true){
      i++;
      printf("%d\n", i);

      if(i >= 5)
         break;
   }
   return 0;
}

輸出

執行此程式碼時,將產生以下輸出 -

1
2
3
4
5

使用#define的布林值

#define預處理器指令用於定義常量。我們可以用它來定義布林常量,FALSE為0,TRUE為1。

示例

請看下面的例子 -

#include <stdio.h>

#define FALSE 0
#define TRUE 1

int main(){

   printf("False: %d \n True: %d", FALSE, TRUE);

   return 0;
}

輸出

執行程式碼並檢查其輸出 -

False: 0 
 True: 1

stdbool.h中的布林型別

C語言的C99標準引入了stdbool.h標頭檔案。它包含bool型別的定義,實際上是_bool型別的typedef別名。它還定義了宏true(展開為1)和false(展開為0)。

示例1

我們可以按如下方式使用bool型別 -

#include <stdio.h>
#include <stdbool.h>

int main(){

   bool a = true;
   bool b = false;

   printf("True: %d\n", a);
   printf("False: %d", b);

   return 0;
}

輸出

執行此程式碼後,您將獲得以下輸出 -

True: 1
False: 0

示例2

我們也可以在邏輯表示式中使用bool型別變數,如下例所示 -

#include <stdio.h>
#include <stdbool.h>

int main(){
  
   bool x;
   x = 10 > 5;
  
   if(x)
      printf("x is True\n");  
   else
      printf("x is False\n");
    
   bool y;
   int marks = 40;
   y = marks > 50;
  
   if(y)
      printf("Result: Pass\n");  
   else
      printf("Result: Fail\n");  
}

輸出

執行程式碼並檢查其輸出 -

x is True
Result: Fail

示例3

讓我們用bool變數實現一個while迴圈 -

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

int main(void){

   bool loop = true;
   int i = 0;
    
   while(loop){
      i++;
      printf("i: %d \n", i);
    
      if (i >= 5)
         loop = false;
   }
   printf("Loop stopped!\n");
   return EXIT_SUCCESS;
}

輸出

執行此程式碼時,將產生以下輸出 -

i: 1
i: 2
i: 3
i: 4
i: 5
Loop stopped!
廣告