- C编程教程
- C语言 - 首页
- C语言基础
- C语言 - 概述
- C语言 - 特性
- C语言 - 历史
- C语言 - 环境搭建
- C语言 - 程序结构
- C语言 - Hello World
- C语言 - 编译过程
- C语言 - 注释
- C语言 - 词法单元
- C语言 - 关键字
- C语言 - 标识符
- C语言 - 用户输入
- C语言 - 基本语法
- C语言 - 数据类型
- C语言 - 变量
- C语言 - 整数提升
- C语言 - 类型转换
- C语言 - 类型强制转换
- C语言 - 布尔值
- C语言中的常量和字面量
- C语言 - 常量
- C语言 - 字面量
- C语言 - 转义序列
- C语言 - 格式说明符
- C语言中的运算符
- C语言 - 运算符
- C语言 - 算术运算符
- C语言 - 关系运算符
- C语言 - 逻辑运算符
- C语言 - 位运算符
- C语言 - 赋值运算符
- C语言 - 一元运算符
- C语言 - 自增和自减运算符
- C语言 - 三元运算符
- C语言 - sizeof 运算符
- C语言 - 运算符优先级
- C语言 - 其他运算符
- C语言中的决策
- C语言 - 决策
- C语言 - if 语句
- C语言 - if...else 语句
- C语言 - 嵌套 if 语句
- C语言 - switch 语句
- C语言 - 嵌套 switch 语句
- C语言中的循环
- C语言 - 循环
- C语言 - while 循环
- C语言 - for 循环
- C语言 - do...while 循环
- C语言 - 嵌套循环
- C语言 - 无限循环
- C语言 - break 语句
- C语言 - continue 语句
- C语言 - goto 语句
- C语言中的函数
- C语言 - 函数
- C语言 - 主函数
- C语言 - 按值调用函数
- C语言 - 按引用调用函数
- C语言 - 嵌套函数
- C语言 - 可变参数函数
- C语言 - 用户自定义函数
- C语言 - 回调函数
- C语言 - 返回语句
- C语言 - 递归
- C语言中的作用域规则
- C语言 - 作用域规则
- C语言 - 静态变量
- C语言 - 全局变量
- C语言中的数组
- C语言 - 数组
- C语言 - 数组的特性
- C语言 - 多维数组
- C语言 - 将数组传递给函数
- C语言 - 从函数返回数组
- C语言 - 变长数组
- C语言中的指针
- C语言 - 指针
- C语言 - 指针和数组
- C语言 - 指针的应用
- C语言 - 指针运算
- C语言 - 指针数组
- C语言 - 指向指针的指针
- C语言 - 将指针传递给函数
- C语言 - 从函数返回指针
- C语言 - 函数指针
- C语言 - 指向数组的指针
- C语言 - 指向结构体的指针
- C语言 - 指针链
- C语言 - 指针与数组的区别
- C语言 - 字符指针和函数
- C语言 - 空指针
- C语言 - void 指针
- C语言 - 悬空指针
- C语言 - 解引用指针
- C语言 - 近指针、远指针和巨指针
- C语言 - 指针数组的初始化
- C语言 - 指针与多维数组的区别
- C语言中的字符串
- C语言 - 字符串
- C语言 - 字符串数组
- C语言 - 特殊字符
- C语言中的结构体和联合体
- C语言 - 结构体
- C语言 - 结构体和函数
- C语言 - 结构体数组
- C语言 - 自引用结构体
- C语言 - 查找表
- C语言 - 点(.)运算符
- C语言 - 枚举(enum)
- C语言 - 结构体填充和打包
- C语言 - 嵌套结构体
- C语言 - 匿名结构体和联合体
- C语言 - 联合体
- C语言 - 位段
- C语言 - typedef
- C语言中的文件处理
- C语言 - 输入/输出
- C语言 - 文件I/O (文件处理)
- C语言预处理器
- C语言 - 预处理器
- C语言 - 编译指令
- C语言 - 预处理器运算符
- C语言 - 宏
- C语言 - 头文件
- C语言中的内存管理
- C语言 - 内存管理
- C语言 - 内存地址
- C语言 - 存储类别
- 其他主题
- C语言 - 错误处理
- C语言 - 可变参数
- C语言 - 命令执行
- C语言 - 数学函数
- C语言 - static 关键字
- C语言 - 随机数生成
- C语言 - 命令行参数
- C编程资源
- C语言 - 问答
- C语言 - 快速指南
- C语言 - 速查表
- C语言 - 有用资源
- C语言 - 讨论
C语言中的布尔值
与int、char或float类型不同,ANSI C标准没有内置或主要的布尔类型。布尔值或bool数据通常指的是可以保存两个二进制值之一的数据:true或false(或yes/no,on/off等)。即使C语言中没有bool类型,您也可以借助enum类型实现布尔值的特性。
符合C99标准或更高版本的C编译器的新版本支持bool类型,该类型已在头文件stdbool.h中定义。
使用enum在C语言中实现布尔类型
enum类型将用户定义的标识符赋给整型常量。我们可以定义一个枚举类型,其中true和false作为标识符,其值为1和0。
示例
1或任何其他非0数字表示true,而0表示false。
#include <stdio.h> int main (){ enum bool {false, true}; enum bool x = true; enum bool y = false; printf ("%d\n", x); printf ("%d\n", y); }
输出
运行代码并检查其输出 -
1 0
将typedef enum 定义为BOOL
为了使其更简洁,我们可以使用typedef关键字将enum bool称为BOOL。
示例1
请看下面的例子 -
#include <stdio.h> int main(){ typedef enum {false, true} BOOL; BOOL x = true; BOOL y = false; printf ("%d\n", x); printf ("%d\n", y); }
在这里,您也将获得相同的输出 -
输出
1 0
示例2
我们甚至可以在决策或循环语句中使用枚举常量 -
#include <stdio.h> int main(){ typedef enum {false, true} BOOL; int i = 0; while(true){ i++; printf("%d\n", i); if(i >= 5) break; } return 0; }
输出
运行此代码时,将产生以下输出 -
1 2 3 4 5
使用#define的布尔值
#define预处理器指令用于定义常量。我们可以用它来定义布尔常量,FALSE为0,TRUE为1。
示例
请看下面的例子 -
#include <stdio.h> #define FALSE 0 #define TRUE 1 int main(){ printf("False: %d \n True: %d", FALSE, TRUE); return 0; }
输出
运行代码并检查其输出 -
False: 0 True: 1
stdbool.h中的布尔类型
C语言的C99标准引入了stdbool.h头文件。它包含bool类型的定义,实际上是_bool类型的typedef别名。它还定义了宏true(展开为1)和false(展开为0)。
示例1
我们可以按如下方式使用bool类型 -
#include <stdio.h> #include <stdbool.h> int main(){ bool a = true; bool b = false; printf("True: %d\n", a); printf("False: %d", b); return 0; }
输出
执行此代码后,您将获得以下输出 -
True: 1 False: 0
示例2
我们也可以在逻辑表达式中使用bool类型变量,如下例所示 -
#include <stdio.h> #include <stdbool.h> int main(){ bool x; x = 10 > 5; if(x) printf("x is True\n"); else printf("x is False\n"); bool y; int marks = 40; y = marks > 50; if(y) printf("Result: Pass\n"); else printf("Result: Fail\n"); }
输出
运行代码并检查其输出 -
x is True Result: Fail
示例3
让我们用bool变量实现一个while循环 -
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> int main(void){ bool loop = true; int i = 0; while(loop){ i++; printf("i: %d \n", i); if (i >= 5) loop = false; } printf("Loop stopped!\n"); return EXIT_SUCCESS; }
输出
运行此代码时,将产生以下输出 -
i: 1 i: 2 i: 3 i: 4 i: 5 Loop stopped!
广告