C 语言中布尔值的用法和案例解析

C语言中的布尔值

在编程中,您经常需要一种只能有两个值的数据类型,例如:

  • 是/否
  • 开/关
  • 真/假

为此,C语言有一个 bool 数据类型,称为布尔值。

布尔变量

在C语言中,bool 类型不是内置数据类型,例如 int 或 char

它是在 C99 中引入的,您必须导入以下头文件才能使用它:

c 复制代码
#include <stdbool.h>

布尔变量使用 bool 关键字声明,只能取值 true 或 false:

c 复制代码
bool isProgrammingFun = true;
bool isFishTasty = false;

在尝试打印布尔变量之前,您应该知道布尔值作为整数返回:

  • 1(或非0的任何其他数字)表示true
  • 0表示false

因此,您必须使用 %d 格式说明符来打印布尔值:

c 复制代码
// 创建布尔变量
bool isProgrammingFun = true;
bool isFishTasty = false;

// 返回布尔值
printf("%d", isProgrammingFun);  // 返回1(true)
printf("%d", isFishTasty);      // 返回0(false)

但是,通过比较值和变量来返回布尔值更常见。

比较值和变量

比较值在编程中很有用,因为它可以帮助我们找到答案和做出决定。

例如,您可以使用比较运算符,例如大于(>)运算符,来比较两个值:

c 复制代码
printf("%d", 10 > 9); // 返回1(true)因为10大于9

从上面的例子可以看出,返回值是布尔值(1)。

您还可以比较两个变量:

c 复制代码
int x = 10;
int y = 9;
printf("%d", x > y);

在下面的示例中,我们使用等于(==)运算符比较不同的值:

c 复制代码
printf("%d", 10 == 10); // 返回1(true)
printf("%d", 10 == 15); // 返回0(false)
printf("%d", 5 == 55);  // 返回0(false)

您不仅限于只比较数字。您还可以比较布尔变量,甚至特殊的结构,例如数组:

c 复制代码
bool isHamburgerTasty = true;
bool isPizzaTasty = true;

// 找出汉堡和披萨是否都好吃
printf("%d", isHamburgerTasty == isPizzaTasty);

记住,在使用 bool 变量时要包含 <stdbool.h> 头文件。

真实案例

让我们想一个"现实生活中的例子",我们需要找出一个人是否有资格投票。

在下面的示例中,我们使用 >= 比较运算符来找出年龄(25)是否大于或等于投票年龄限制,该限制设置为18:

c 复制代码
int myAge = 25;
int votingAge = 18;

printf("%d", myAge >= votingAge); // 返回1(true)

很酷,对吧?一个更好的方法(既然我们已经开始讨论了),是将上面的代码包装在一个 if...else 语句中,以便我们可以根据结果执行不同的操作:

c 复制代码
// 如果myAge大于或等于18,则输出"Old enough to vote!"。否则输出"Not old enough to vote.":

int myAge = 25;
int votingAge = 18;

if (myAge >= votingAge) {
  printf("Old enough to vote!");
} else {
  printf("Not old enough to vote.");
}

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

相关推荐
用户479492835691526 分钟前
从一句话或代码仓到可交互 HTML:开源 Agent 画图技能 Archify v3.2 实测与选型边界
前端·后端·面试
九英里路38 分钟前
protobuf快速上手
网络·c++·中间件·json·谷歌·序列化·protobuf
纪念 2291 小时前
C++ 算法基础 (差分)
开发语言·c++·算法
努力的小雨1 小时前
别再复制日志给AI了!我让Codex自己去观测云查报错
后端
afumu3 小时前
Go 写一个只监听 127.0.0.1 的控制服务:鉴权、白名单、危险命令拦截
后端·安全·go
johnjincaaaa4 小时前
猿人学第 18 题「jsvmp 洞察先机」逆向通关实录
javascript·后端
用户4702784004054 小时前
C语言编译与链接
后端·开源
你三大爷4 小时前
从 Hessian 迁移到 protostuff:深嵌套模型反序列化耗时与高并发类加载锁的根治实战
后端·架构
IT枫斗者枫哥4 小时前
子线程断言失败,JUnit 为什么还显示通过?
java·后端
stark张宇6 小时前
Vibe Coding 入门实战:用 Claude Code 跑通 AI 产品开发流程(上)
后端·claude·vibecoding