【发布时间】:2021-01-10 05:32:40
【问题描述】:
如果_Bool 类型的行为类似于整数并且不强制值是真/假或 1/0,例如:
_Bool bools[] = {0,3,'c',0x17};
printf("%d", bools[2]);
> 1
在那里有什么好处?这是否只是一种简单的强制事物以查看它们如何评估“真实性”的方法,例如:
printf("%d\n", (_Bool) 3);
> 1
或者这对 C 语言有什么帮助或用处?
【问题讨论】:
-
据我所知,您不应该将它与前缀一起使用,这是一个实现细节。使用
bool。 -
@tadman C 语言,因为 C99 有
_Bool。bool在<stdbool.h>中定义为_Bool的宏。 -
@chux-ReinstateMonica 当然,但这并不意味着使用文字
_Bool是一个好计划。这是一种帮助人们适应“新”标准的变通方法。希望 21 年后人们已经准备好了。 -
@tadman
_Bool不是实现细节。它是标准接口的一部分。 -
@AyxanHaqverdili 据我了解,这是一种通过声明新关键字来避免在 C 中引入“破坏性”更改的方法。这不是你想故意使用的东西。这是一个标准化的东西,但它也是一个“内部”,因为你直接使用它是不寻常的。