A Retrospect to Bool Type [Bool类型回顾]
Published: Jun. 30, 2018
布尔类型[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。