布林 (資料類型)

Ada

Ada在標準包中定義Boolean為一種列舉型別，有兩種值False和True，並且False < True。
type Boolean is (False, True);
 
p : Boolean := True;...if p then
  ...end if;
相關的操作（=, /=, <, <=, >, >=）使用語所有的列舉型別，包括Boolean。布林運算and, or, xor和not由Boolean及任意聲明的子類型定義。布林運算也適用於Boolean值陣列。

C

在C99之前，C語言的標準沒有提供布林型別，但是這不意味著C90不能表示布林值的概念。C中的所有布林運算（&&, ||）以及條件聲明（if, while）都以非零值代表真，零值代表假。這樣，在其他型別如一個整數或一個列舉中儲存布林值就變得很平常。為了方便，常常為布林型別建立一個typedef來和一些已存在的資料型別相關聯。C99標準也提供了一個內建的布林型別。
為了說明C中的布林型，注意以下C程式碼：
if (my_variable) {
  printf("True!\n");} else {
  printf("False!\n");}
等價於：
if (my_variable != 0) {
  printf("True!\n");} else {
  printf("False!\n");}
簡單來說這就是一個整數型別。由於C標準要求0用在指標上下文中時要代表空指標，上面的概念也可以用來檢查一個指標是否為空，雖然一些程式風格不建議這樣用。這種情況同樣適用於浮點值，當比較它們的時候要特別小心，因為它們通常包含四捨五入的結果。通常，整型用來包含布林變數。
雖然為了測試一個變數的真假值時沒必要來命名真或假，但是在給它們分配值的時候卻是需要的。（一種方法是使用零值和一，這樣做的好處是語言獨立。）其他方法，enum關鍵字允許在語言中根據你的選擇來命名元素，例如：
typedef enum { FALSE, TRUE } boolean;...boolean b;
如下典型的預處理巨集經常被使用。
#define FALSE 0#define TRUE 1...int f = FALSE;
有時TRUE可能被定義為-1或~0（位元運算0的補）。這意味著在現在常見的二補數電腦架構的整型中所有的位都被設定為1。
但是，在C中任意非零值都代表真就帶來了問題，因為TRUE由一個特定的值來表示，因此在其他語言中if (foo == TRUE) ...只不過是多餘的，而在C中，就是錯誤的程式碼。

C99

C99中有bool型別，取值為true和false，定義在<stdbool.h>標頭檔中：
#include <stdbool.h>bool b = false;...b = true;

C++

C++程式語言在其標準化過程中引入了bool、true和false關鍵字，增加了原生資料型別來支援布林資料，其大小被實現定義。 bool在1993年被引入。.
1998年的C++標準函式庫定義了一個vector<bool>類別的特例。為了最佳化空間，其中的元素被打包，使得每一個布林變數只使用一位記憶體。這被認為是一個錯誤。vector<bool>不符合STL容器的需要。例如一個container<T>::reference必須為T型別的一個真值左值。這和vector<bool>的情況不同。類似地，vector<bool>::iterator在解除參照時不產生一個bool&。在C++標準委員會和函式庫工作群組之間有個共識，就是vector<bool>應該被反對或完全從下一個標準中被移除。

C#

在C#中，布林變數通過保留字bool來辨識，這個保留字是預定義結構型別System.Boolean的別名，占一位元組。在bool和其他型別之間不存在標準的轉換。此語言還提供了一個布林型別DBbool，可以表示三種值：true、false和null。這和SQL中布林運算式的用法類似。
輸出一個布林型的程式碼如下：
bool myBool = (i == 5);System.Console.WriteLine(myBool ? "I = 5" : "I != 5");

Fortran

在Fortran被標準化之前，於1950年代引入了LOGICAL關鍵字和相關的操作.NOT.、.AND.、.OR.等等。
logical :: bool        ! 宣告一個布林變數名稱為boolbool=.true.            ! 將變數bool存入值.true.if (bool) then         ! 由於條件為.true.所以進入內部執行
  print*,"bool=",bool  ! 顯示 bool=T
  bool=1==2            ! 1==2的運算結果是.false.，將.false.存入變數bool
  print*,"bool=",bool  ! 再次顯示，這時候變成 bool=Fend if

Java

在Java語言中，布林變數由原始型別boolean表示。Java虛擬機器將實際在記憶體中的表現抽象，這樣JVM開發者可以使用儘可能方便的方式來代表布林量（例如，一個位元組或者一個字）。
Java語言規範不允許任何顯式或隱式的從boolean的轉換。這樣就需要編譯器拒絕如下程式碼：
int i = 1;if (i)
  System.out.println("i is not zero.");else
  System.out.println("i is zero.");
因為整型變數i不能轉換為一個布林型並且if語句需要一個boolean條件。
在Java中，boolean值（和其他原始型別相同）可以被附加到字串。這個特性提供了一個預設的布林型的視覺化表現（true被顯示為"true"，false被顯示為"false"）。

JavaScript

JavaScript有兩個關鍵字，true和false，兩者都為小寫。JavaScript是一種弱型別的語言，沒有明確的布林資料型別供其變數使用。但是許多值用在邏輯上下文時可以被當成false，包括零（0）、null、零長度字串（""）、NaN以及undefined。所有其他變數值，包括一（1）、空陣列和空物件，都被認為是true。JavaScript 提供了一個Boolean 物件，可以被用作控制布林值的容包裝。
var boolean = true;    //設boolean為trueif(boolean && 1){
    console.log("This is true.");    //將會顯示這個，因為boolean是true和1亦是true}else{
    console.log("This is false.");}
但如果使用Boolean物件的話，它總是會被當成true，儘管其包含false值。
var boolean = new Boolean(false);    //設boolean為一個Boolean物件，並設定其內容為falseif(boolean){
    console.log("This is true.");    //將會顯示這個，因為Boolean物件不是null}else{
    console.log("This is false.");}
若僅使用 Boolean() function，則視同將參數轉為布林值
var boolean = Boolean(false);    //等同於將 boolean 設為 falseif(boolean){
    console.log("This is true.");    
}else{
    console.log("This is false."); //將會顯示這個，因為 boolean 的值為 false}

λ演算

在λ演算計算模型中，布林型由Church數表示。

Lisp

LISP有兩個特殊的符號T和NIL，分別代表了邏輯值真和假。但是，任意非NIL值都由LISP系統翻譯成真。特殊的符號NIL也用空列表()表示。因此空列表為假，但是任何有資料的列表都為真。這樣，什麼都沒有為假，其他所有都為真。

ML

和Ocaml類似，ML語言擁有bool型別，包含true和false值，例如：
- fun isittrue x = if x then "YES" else "NO" ;
> val isittrue = fn : bool -> string
- isittrue true;
> val it = "YES" : string
- isittrue false;
> val it = "NO" : string
- isittrue (8=8);
> val it = "YES" : string
- isittrue (7=5);
> val it = "NO" : string

Objective-C

Objective-C提供了BOOL型別，以及巨集YES和NO。由於Objective-C是C語言的超集，因此C語言的布林語意也適用。

Swift

Swift的布林型別是 Bool，主要用於 if 和 while 的條件判斷，值只能是真true或假false。
let isSuccess = truelet isOpenDoor = false

Ocaml

Ocaml 擁有一個 bool 值，為 true 或 false。
# 1 = 1 ;;- : bool = true
和很多其它的語言一樣，Ocaml使用 true 或 false關鍵字來表示布林值。

Pascal

Boolean是Pascal提供的基本資料型別，定義和用法如下：
(* 系统或标准声明 *)Type 
   Boolean = (False,True);(* 用法 *)var
  value: Boolean;
 
...
 
value := True;value := False;
 
if value thenbegin
  ...end;
列舉外的值沒有被定義。某些編譯器實現（如Delphi）為了介面目的擁有特殊的擴充布林型別，並將其對映到C數值型別上，例如bytebool、wordbool、longbool等。