在编程和日常生活中,经常需要一种只能具有两个值之一的数据类型,如是否、开关、真假等,因此,C 有一种bool
数据类型,称为booleans。布尔值表示 或true
的值false
。
C 中的 bool 是大多数语言中的基本数据类型,可以保存两个值之一:true 或 false,1或0。它用于表示逻辑值,常用于编程中控制 if-else 语句、while 循环和 for 循环等决策语句的执行流程。判断条件为真(true或1),则执行语句。
C 中的布尔值
在 C 中,bool 数据类型不是内置数据类型。但是,C 语言的 C99 引入了_Bool,无序头stdbool头文件便可使用true和false,可以使用以下不同的方法在 C 中实现bool类型:
- 使用头文件“stdbool.h”
- 使用枚举类型
- 使用define声明布尔值
1. 使用头文件“stdbool.h”
要在 C 中使用 bool,必须包含头文件“stdbool.h”。包含 stdbool.h 库后,我们可以使用该数据类型,因为 stdio.h 库不提供布尔值。
bool
:定义为_Bool
。true
:定义为1。false
:定义为0。__bool_true_false_are_defined
:定义为1。
/*
可以将主函数中的代码复制到另外两个中,对比一下他们之间的相似和不同
*/
#include <stdio.h>
#include <stdbool.h>
int main(){
printf("%d\n", sizeof(bool));
printf("true: %d\n", true);
printf("false: %d\n", false);
bool b1 = -1;
bool b2 = 'a';
bool b3 = 0;
printf("%d\n", b1);
printf("%d\n", b2);
printf("%d\n", b3);
return 0;
}
-
结果
-
sizeof(bool) 的值为1
-
为bool型变量赋值,非零值赋值为1(true),零值赋值为0(false)
-
true与1(非零值)等价,false与0等价
2. 使用枚举类型
或者,可以使用枚举类型在 C 中实现 bool。这里我们没有导入库,而是声明一个枚举类型,以便使用 bool 作为数据类型。
#include <stdio.h>
typedef enum { false, true } bool;
int main(){
bool a = true;
bool b = false;
printf("true : %d\n", a);
printf("false : %d\n", b);
return 0;
}
3. 自定义宏
为 false 值分配整数值 0,为 true 值分配整数值 1。还可以使用值为 0 (false) 或 1 (true) 的 int 或 char表示 C 中的 bool 数据类型。
#define bool int
#define false 0
#define true 1
int main()
{
bool a = true;
bool b = false;
printf("True : %d\n", a);
printf("False : %d\n", b);
return 0;
}
在条件语句中使用 Bool
bool 数据类型通常用于条件语句,例如 if-else 语句。诸如 a 大于等于 b 或 b 大于 a 之类的条件可以使用布尔值来实现。这些条件使用条件运算符,如“==”、“>”、<”、“!=”等,返回布尔值。
#include <stdbool.h>
#include <stdio.h>
int main(){
int a = 3;
int b = 4;
bool b = true;
if (a > b){
printf("a is greater\n");
} else {
printf("a is smaller\n");
}
if (b) { // 判断条件为真,执行
printf("b: output: true\n");
}
if (!b){ // 判断条件为假,不执行
printf("!b: output: false\n");
}
return 0;
}
在循环中使用 bool
bool 数据类型也用于循环,例如 while 循环和 for 循环。条件语句是循环中最重要的部分之一。如果不使用返回布尔值的条件语句,我们就无法定义循环的断点,没有条件语句的循环将成为无限循环。
#include <stdbool.h>
#include <stdio.h>
int main(){
bool a = true;
int i = 0;
while (a) {
printf("i is %d\n", i);
i++;
if (i > 5) {
a = false;
}
}
return 0;
}
- 结果
使用 bool 作为函数返回类型
还可以使用 bool 数据类型作为函数返回类型。函数返回类型添加了返回函数内执行的所有操作的结果的功能。
#include <stdbool.h>
#include <stdio.h>
bool is_even(int num){ // 判断参数是否是偶数
if (num % 2 == 0) {
return true;
} else {
return false;
}
}
int main(){
int num = 5;
if (is_even(num)) {
printf("%d is even\n", num);
} else {
printf("%d is odd\n", num);
}
return 0;
}
C 布尔常见问题解答
-
C 语言中的布尔示例是什么?
布尔值是 C 中的一种数据类型,它保存两个值,可以是 true 或 false。
-
bool 的 C 标头是什么?
“stdbool.h”是 bool 的 C 头文件。
-
C 中布尔值的大小是多少?
C 中的布尔值大小为 1 个字节,因为它只需要两个值 0 和 1。
-
C使用bool还是boolean?
Boolean 是一种可以存储 true 或 false 值的数据类型,我们在 C 中将其用作 bool。