布尔是一位英国数学家,他很好地融合了逻辑运算和数学的关系。为了纪念他,用"布尔"表示逻辑的"真"和"假"。布尔类型最早是Algol 60提出。
- 早期面向过程的编程语言用整数表达布尔,一般为0为False, 非0为True,比如C/C++.
- 为了表达接逻辑的真假,一般用宏来指代。c99引入_Bool, 并没有用Bool或者bool的原因是,以往的C代码中用Bool或bool一般是宏定义。C/C++用整数代表真假很简单直接,只要数值为0就是假,不为0就是真,不管是指针还是什么结构。
- 随着编程语言的抽象加强,编程语言将bool当做数据类型,尽可能不允许它和数值直接运算。Java/C#不能用整形数值作为逻辑表达式判断真假,为表达更自然。
- C++虽内置bool类型,和C/Python一样,可以用整形变量作为逻辑判断。
- Ada/Ruby等编程语言不能用整形变量作为逻辑判断。
- Java的布尔关键字是boolean而非bool.
- Ruby比较不一样,0代表真,只有false和nil为假。
- Python 用True和False表示真假,大小为0的容器也是假(比如空列表),字符串””也为假。
- Fortran的logical代表布尔类型,.true.和.false.分别代表真假。
- Kotlin 用Boolean代表布尔类型,值对应true和false.
- Pascal True和False代表真假。
优化的"布尔"
比特Bit是表达布尔类型的最小单位,尽管如此,计算机大部分用字节保存布尔类型,为了方便简单。一些编程语言为了优化存储空间,用比特保存布尔,比如C++的bitset.
