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

C语言中的布尔值

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

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

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

布尔变量

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

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

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

布尔变量使用 bool 关键字声明,只能取值 truefalse

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,关注后即可获取最新文章推送

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

相关推荐
NiShiKiFuNa1 分钟前
AutoHotkey 功能配置与使用指南
后端
黎燃23 分钟前
基于生产负载回放的数据库迁移验证实践:从模拟测试到真实预演【金仓数据库】
后端
文心快码BaiduComate42 分钟前
双十一将至,用Rules玩转电商场景提效
前端·人工智能·后端
拉不动的猪1 小时前
关于scoped样式隔离原理和失效情况&&常见样式隔离方案
前端·javascript·面试
该用户已不存在1 小时前
免费的 Vibe Coding 助手?你想要的Gemini CLI 都有
人工智能·后端·ai编程
mit6.8241 小时前
一些C++的学习资料备忘
开发语言·c++
bcbnb1 小时前
uni-app iOS性能监控全攻略,跨端架构下的性能采集、分析与多工具协同优化实战
后端
qq_12498707531 小时前
基于springboot+vue的物流管理系统的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·毕业设计
CryptoRzz1 小时前
DeepSeek印度股票数据源 Java 对接文档
前端·后端
上去我就QWER2 小时前
深入解析Qt中的QDrag:实现灵活的拖放交互
c++·qt