我的一个朋友问了一个问题,为什么BooleanC编程语言中没有数据类型.我做了一些搜索和阅读.我在堆栈溢出中得到的问题和答案很少说,
我们可以用这种方式使用bool
#define bool int
#define TRUE 1
#define FALSE 0
Run Code Online (Sandbox Code Playgroud)
或使用typedefs.
但我的问题是:即使经过这么多年,为什么它不是作为C中的数据类型实现的.实现一个字节数据类型来存储布尔值而不是使用int或short显式是没有意义的.
C语言中的大多数关键字(或与此相关的任何语言)都以字母开头。但是有些关键字以下划线开头吗?这些关键字是:_Alignas,_Alignof,_Atomic,_Bool,_Complex,_Generic,_Imaginary,_Noreturn,_Static_assert和_Thread_local。
我觉得这很奇怪。如果它是不是API真正组成部分的隐藏的全局常量或内部函数,我会理解的。但是这些都是关键词。
当C实际上有一个称为bool和的宏static_assert并且它们的实现使用关键字时,我感到特别奇怪。
每当我需要布尔类型时,我被告知创建一个或更好的使用stdbool.h.
自stdbool.h使用以来typedef bool _Bool,是否有理由使用标题而不仅仅使用类型_Bool?它只是为了额外的宏(/* #define true 1 #define false 0 */)吗?