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

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

相关推荐
paopaokaka_luck2 分钟前
基于Spring Boot+Vue的吉他社团系统设计和实现(协同过滤算法)
java·vue.js·spring boot·后端·spring
Flobby52937 分钟前
Go语言新手村:轻松理解变量、常量和枚举用法
开发语言·后端·golang
Warren982 小时前
Java Stream流的使用
java·开发语言·windows·spring boot·后端·python·硬件工程
程序视点3 小时前
IObit Uninstaller Pro专业卸载,免激活版本,卸载清理注册表,彻底告别软件残留
前端·windows·后端
xidianhuihui3 小时前
go install报错: should be v0 or v1, not v2问题解决
开发语言·后端·golang
爱分享的程序员4 小时前
前端面试专栏-前沿技术:30.跨端开发技术(React Native、Flutter)
前端·javascript·面试
进击的铁甲小宝4 小时前
Django-environ 入门教程
后端·python·django·django-environ
charlie1145141914 小时前
设计自己的小传输协议 导论与概念
c++·笔记·qt·网络协议·设计·通信协议
掘金码甲哥4 小时前
Go动态感知资源变更的技术实践,你指定用过!
后端
王柏龙5 小时前
ASP.NET Core MVC中taghelper的ModelExpression详解
后端·asp.net·mvc