布林 (資料類型)

title: Ada.
content: Ada在标准包中定义codice_1为一种枚举类型,有两种值codice_2和codice_3,并且codice_2 < codice_3。  相关的操作(codice_6, codice_7, codice_8, codice_9, codice_10, codice_11)使用语所有的枚举类型,包括codice_1。布尔运算codice_13, codice_14, codice_15和codice_16由codice_1及任意声明的子类型定义。布尔运算也适用于codice_1值数组。
title: Algol.
content: Algol 60有codice_1数据类型和相关的操作,定义在Algol 60报告中。这在ALGOL 68中被简化为codice_20。  ALGOL 68语言详细说明(177页)中关于布尔操作定义的原文:  10.2.2. 布尔操作数的运算
title: C.
content: 在C99之前,C语言的标准没有提供布尔类型,但是这不意味着C90不能表示布尔值的概念。C中的所有布尔运算(&&, ||)以及条件声明(if, while)都以非零值代表真,零值代表假。这样,在其他类型如一个整数或一个枚举中保存布尔值就变得很平常。为了方便,常常为布尔类型创建一个typedef来和一些已存在的数据类型相关联。C99标准也提供了一个内置的布尔类型。  为了说明C中的布尔型,注意以下C代码: 等价于: 简单来说这就是一个整数类型。由于C标准要求codice_21用在指针上下文中时要代表空指针,上面的概念也可以用来检查一个指针是否为空,虽然一些程序风格不建议这样用。这种情况同样适用于浮点值,当比较它们的时候要特别小心,因为它们通常包含四舍五入的结果。通常,整型用来包含布尔变量。  虽然为了测试一个变量的真假值时没必要来命名真或假,但是在给它们分配值的时候却是需要的。(一种方法是使用零值和一,这样做的好处是语言独立。)其他方法,codice_22关键字允许在语言中根据你的选择来命名元素,例如: 如下典型的预处理宏经常被使用。  有时codice_23可能被定义为-1或~0(位运算0的补)。这意味着在现在常见的二补数计算机架构的整型中所有的位都被设置为1。  但是,在C中任意非零值都代表真就带来了问题,因为codice_23由一个特定的值来表示,因此在其他语言中codice_25只不过是多余的,而在C中,就是错误的代码。
title: C99.
content: C99中有codice_20类型,取值为codice_27和codice_28,定义在codice_29头文件中:
title: C++.
content: C++编程语言在其标准化过程中引入了codice_20、codice_27和codice_28关键字,增加了原生数据类型来支持布尔数据,其大小被实现定义。 codice_20在1993年被引入。.  1998年的C++标准库定义了一个codice_34类的特例。为了优化空间,其中的元素被打包,使得每一个布尔变量只使用一位内存。这被认为是一个错误。codice_34不符合STL容器的需要。例如一个codice_36必须为codice_37类型的一个真值左值。这和codice_34的情况不同。类似地,codice_39在解除引用时不产生一个codice_40。在C++标准委员会和库工作组之间有个共识,就是codice_34应该被反对或完全从下一个标准中被移除。
title: C#.
content: 在C#中,布尔变量通过保留字codice_20来识别,这个保留字是预定义结构类型codice_43的别名,占一字节。在codice_20和其他类型之间不存在标准的转换。此语言还提供了一个布尔类型codice_45,可以表示三种值:codice_27、codice_28和codice_48。这和SQL中布尔表达式的用法类似。  输出一个布尔型的代码如下:
title: Fortran.
content: 在Fortran被标准化之前,于1950年代引入了codice_49关键字和相关的操作codice_50、codice_51、codice_52等等。
title: Java.
content: 在Java语言中,布尔变量由原始类型codice_53表示。Java虚拟机将实际在内存中的表现抽象,这样JVM开发者可以使用尽可能方便的方式来代表布尔量(例如,一个字节或者一个字)。  Java语言规范不允许任何显式或隐式的从codice_53的转换。这样就需要编译器拒绝如下代码:  因为整型变量codice_55不能转换为一个布尔型并且codice_56语句需要一个codice_53条件。  在Java中,codice_53值(和其他原始类型相同)可以被附加到字符串。这个特性提供了一个默认的布尔型的可视化表现(codice_27被显示为"true",codice_28被显示为"false")。
title: JavaScript.
content: JavaScript有两个关键字,codice_27和codice_28,两者都为小写。JavaScript是一种弱类型的语言,没有明确的布尔数据类型供其变量使用。但是许多值用在逻辑上下文时可以被当成codice_28,包括零(codice_21)、codice_48、零长度字符串(codice_66)、codice_67以及codice_68。所有其他变量值,包括一(codice_69)、空数组和空对象,都被认为是codice_27。JavaScript 提供了一个codice_1 对象,可以被用作控制布尔值的容包装。  但如果使用codice_1物件的话,它总是会被当成codice_27,尽管其包含codice_28值。  若仅使用 codice_75 function,则视同将参数转为布林值
title: λ演算.
content: 在λ演算计算模型中,布尔型由Church数表示。
title: Lisp.
content: LISP有两个特殊的符号codice_37和codice_77,分别代表了逻辑值真和假。但是,任意非codice_77值都由LISP系统翻译成真。特殊的符号codice_77也用空列表codice_80表示。因此空列表为假,但是任何有数据的列表都为真。这样,什么都没有为假,其他所有都为真。
title: ML.
content: 和Ocaml类似,ML语言拥有codice_20类型,包含codice_27和codice_28值,例如:
title: Objective-C.
content: Objective-C提供了codice_84类型,以及宏codice_85和codice_86。由于Objective-C是C语言的超集,因此C语言的布尔语义也适用。
title: Swift.
content: Swift的布林型别是 codice_87,主要用于 if 和 while 的条件判断,值只能是真codice_27或假codice_28。
title: Ocaml.
content: Ocaml 拥有一个 codice_20 值,为 codice_27 或 codice_28。  和很多其它的语言一样,Ocaml使用 codice_27 或 codice_28关键字来表示布林值。
title: Pascal.
content: codice_1是Pascal提供的基本数据类型,定义和用法如下:  枚举外的值没有被定义。某些编译器实现(如Delphi)为了接口目的拥有特殊的扩展布尔类型,并将其映射到C数值类型上,例如bytebool、wordbool、longbool等。

Summary: 布林(英语:Boolean)是计算机科学中的逻辑数据类型,以发明布林代数的数学家乔治·布尔为名。它是只有两种值的原始类型,通常是真和假。布尔数据类型主要与条件语句相关联,条件语句通过根据开发人员指定的条件式,更改程序控制流来允许评估语句的运算值为真或假(即条件成立或不成立)。这是一种更广泛的逻辑数据类型的特殊情况(参见概率逻辑)-逻辑并不总是只属于布尔类型的。