我刚刚在写C代码时发现,它没有布尔/bool数据类型。是否有任何可以包含的C库,以便让我能够返回布尔/bool数据类型?
如果您有支持C99的编译器,您可以
#include <stdbool.h>
否则,您可以定义自己的函数(如果需要)。根据您想如何使用它以及是否希望将代码编译为C ++,您的实现可能非常简单,例如:#define bool int
#define true 1
#define false 0
在我看来,你可以直接使用int
,将0表示为假,将非零值表示为真。这通常是在C语言中的做法。
true
和false
都是被替换为1
和0
的宏,而bool
是一个扩展为布尔类型 _Bool
的宏)。 - James McNellisbool
,true
和 false
宏定义了,那么将返回类型定义为 bool
并返回 false
。否则,将返回类型定义为 int
并返回 0
。做什么由你决定。我认为非宏定义的方法更好。 - James McNellisC99有一个布尔数据类型,但如果您必须使用旧版本,则只需定义一个类型:
typedef enum {false=0, true=1} bool;
bool
类型是危险的,因为语义不同。(bool)2
的结果是2,而不是1。一个更现实的例子:在大多数实现中,1U<<(bool)isdigit(c)
将给出错误的结果。 - R.. GitHub STOP HELPING ICE#include <stdbool.h>
typedef enum bool {false=0; true=1;} bool;
。这样更安全,因为它让编译器进行类型检查并消除了宏展开竞争。bool b = 1;
。 - James McNellisfloat f; f = true;
应该会因为隐式(并且可能不兼容)类型转换而引发警告。 - ysap_Bool
作为纯粹的布尔类型。无需任何 #include
即可使用:int main(void)
{
_Bool b = 1;
b = 0;
}
enum {false,true};
false
的值为 0,true
的值为 1。
struct Bool {
int true;
int false;
}
int main() {
/* bool is a variable of data type – bool*/
struct Bool bool;
/*below I’m accessing struct members through variable –bool*/
bool = {1,0};
print("Student Name is: %s", bool.true);
return 0;
}