布尔类型[bool]是计算机程序常用的类型,但是之前从来没有仔细研究过bool类型在各种语言的实现方法,下面列出了bool类型在常见编程语言的长度(持续更新)。

C

首先C语言在C99标准之前并不直接支持bool类型,所以一般都是通过宏定义来实现bool

#define bool char(int)
#define TRUE 1
#define FALSE 0

但是C99标准引入了stdbool.h这个头文件,如果你的编译器支持,那么引入头文件你就可以直接之用bool类型而不用自己定义,但是这个stdbool的头文件是这样的

#ifndef _STDBOOL_H
#define _STDBOOL_H

#ifndef __cplusplus

#define bool	_Bool
#define true	1
#define false	0

#else /* __cplusplus */
...

_Bool这个类型是C99引入的新的关键字,只能有0和1两个值,经过printf("%zu\n", sizeof(_Bool));测试,其长度为1byte

C++

C++默认直接支持bool类型,有true和false两个值,大小也是1byte

Java

Java也是默认支持bool的,只不过关键字是boolean,因为Java是一个硬件无关的语言,所以boolean的长度和JVM有关,目前可知的数据大概在几十byte https://stackoverflow.com/questions/383551/what-is-the-size-of-a-boolean-variable-in-java。