相关疑难解决方法(0)

为什么布尔数据类型没有在C中实现

我的一个朋友问了一个问题,为什么BooleanC编程语言中没有数据类型.我做了一些搜索和阅读.我在堆栈溢出中得到的问题和答案很少说,

  1. 所有数据类型都应该是可寻址的,并且无法解决一些问题.
  2. 主流CPU硬件级别的基本数据结构是一个字节.对这些CPU中的位进行操作需要额外的处理.

我们可以用这种方式使用bool

#define bool int
#define TRUE 1
#define FALSE 0
Run Code Online (Sandbox Code Playgroud)

或使用typedefs.

但我的问题是:即使经过这么多年,为什么它不是作为C中的数据类型实现的.实现一个字节数据类型来存储布尔值而不是使用intshort显式是没有意义的.

c boolean

9
推荐指数
2
解决办法
1373
查看次数

为什么C的关键字以下划线开头

C语言中的大多数关键字(或与此相关的任何语言)都以字母开头。但是有些关键字以下划线开头吗?这些关键字是:_Alignas_Alignof_Atomic_Bool_Complex_Generic_Imaginary_Noreturn_Static_assert_Thread_local

我觉得这很奇怪。如果它是不是API真正组成部分的隐藏的全局常量或内部函数,我会理解的。但是这些都是关键词

当C实际上有一个称为bool和的宏static_assert并且它们的实现使用关键字时,我感到特别奇怪。

c keyword

9
推荐指数
2
解决办法
192
查看次数

为什么使用<stdbool.h>而不是_Bool?

每当我需要布尔类型时,我被告知创建一个或更好的使用stdbool.h.

stdbool.h使用以来typedef bool _Bool,是否有理由使用标题而不仅仅使用类型_Bool?它只是为了额外的宏(/* #define true 1 #define false 0 */)吗?

c boolean

7
推荐指数
1
解决办法
3034
查看次数

标签 统计

c ×3

boolean ×2

keyword ×1