首页 > 其他分享 >一文搞清楚C语言布尔类型(bool)

一文搞清楚C语言布尔类型(bool)

时间:2025-01-09 14:31:03浏览次数:3  
标签:搞清楚 int sex bool 类型 Bool C语言 布尔

有些场景中,变量的取值只有两种情况。比如说,用变量 sex 存储人的性别,它的值就只有两种情况,分别是“男”和“女”。

通过前面的学习,读者已经掌握了很多种数据类型,比如 char、short、int、long、float、double 等。那么,变量 sex 的类型应该是什么呢?

在 C99 标准发布之前,对于只有两种取值的变量,没有完全适配的数据类型,退而求其次,通常选择 int 作为此变量的类型。对于 int 类型的 sex 来说,可以设定 sex 的值为 0 时表示女性,值为非 0 数时表示男性。

为了解决这个历史遗留问题,C99 标准新引入了 _Bool 类型,中文叫做布尔类型。

C语言_Bool类型

C语言标准规定,布尔类型的变量只能存储 0 和 1 这两个值。例如:

#include <stdio.h>

int main()
{
    _Bool sex = 0;
    printf("sex = %d\n", sex);
    sex = 1;
    printf("sex = %d\n", sex);
    return 0;
}

执行结果为:

sex = 0
sex = 1

printf() 函数输出 _Bool 变量的值,通常使用 %d 作为格式控制符。

程序里允许手动为布尔变量赋值除 1 以外的非 0 数,但变量的值为 1。例如:

_Bool sex = 123;
printf("sex = %d\n", sex);

执行结果为:

sex1 = 1

布尔类型的长度

Bool 类型的长度可以用 sizeof 操作符查看:

#include <stdio.h>
int main()
{
    printf("%ld", sizeof(_Bool));
    return 0;
}

执行结果为:

1

显然,_Bool 类型的长度和 char 相同,只占用 1 个字节。

C99 bool类型

布尔类型(_Bool)以下划线_开头,首字母还要大写,这和我们之前掌握的类型(char、float、int、float)相比,写法上有较大的出路,初学者多少会觉得别扭。

其实除了C语言,很多编程语言都提供了布尔类型,比如 C++、Java、C# 等,它们中的绝大部分都采用“bool”作为布尔类型的名称,并且布尔类型的两种取值分别用“假(false)”和“真(true)”表示,false 代指 0,true 代指 1。

或许是受其它编程语言的影响,又或许是考虑到初学者的感受,C语言标准委员会决定引入 _Bool 类型的同时,添加 bool 作为 _Bool 类型的别名,并且布尔类型的取值可以用 true 和 false 表示。

也就是说在C语言程序中,布尔类型可以用 _Bool 表示,也可以用 bool 表示。

需要注意的点,使用 bool 类型之前,必须先引入<stdbool.h>头文件。例如:

#include <stdio.h>
#include <stdbool.h>   // bool、true、false

int main()
{
    bool sex = true;
    printf("%d", sex);
    return 0;
}

执行结果为:

1

总结

对于仅有两个值的变量,C99 标准建议将变量的类型设定为布尔类型,可以用 _Bool 或者 bool 表示。如果编译器不支持布尔类型,退而求其次,通常选用 int 类型。

在 C99 标准中,想用 bool 表示布尔类型,想用 true 和 false 表示布尔类型的两种取值,必须先引入<stdbool.h>头文件。

标签:搞清楚,int,sex,bool,类型,Bool,C语言,布尔
From: https://blog.csdn.net/zdoeo/article/details/144978255

相关文章

  • C|C语言中的语法总结
    随着时间的不断推进,小编的c语言之路也快接近尾声了,虽然c的语言很底层,但是c仍然对小编的能力给到了提升,在即将与它告别的时间,小编也会用指尖能触及的键盘将它记录下来,也方便后面到来的新手小白可以快速学习,小编也会用自己最精简的理解将所有基础语法记录下来!那么让我们一起来看......
  • C语言的关键字typedef与结构体的类型别名
    在C语言中,typedef是一个非常有用的关键字,它用于为数据类型创建新的名称(别名)。这不仅可以提高代码的可读性,还可以简化复杂类型声明的使用。基本用法typedef的基本语法结构如下:typedefexisting_typenew_type_name;这里,existing_type是已经存在的数据类型,可以是基础数据类型......
  • C++/C语言的内存管理之虚拟内存
    C++/C语言的内存管理之虚拟内存一、虚拟内存1、组成2、特点3、目的二、栈区1、特点2、缺点三、堆区1、特点2、缺点3、相关四、全局静态区1、特点五、常量区1、特点六、代码区1、特点一、虚拟内存1、组成(1)栈区(Stack):存放局部变量、函数的参数。编译器自动分配和......
  • C语言中两个不同类型的结构体相互幅值
    在C语言中,如果两个结构体的定义(字段名称、数量、顺序、类型)不一样,就不能直接使用=运算符进行整体赋值,需要逐个字段进行赋值或者通过其它手段进行“转换”。1.字段一一对应赋值1.1手动逐个赋值假设有如下两个结构体:typedefstruct{intid;charname[20]......
  • 【C语言】打印菱形
    目录前言一、题目介绍1.1问题描述1.2输入描述1.3 输出描述1.4示例 二、基本思路三、代码实现3.1基本框架3.2pirnt函数的实现四、效果展示 五、完整代码前言在牛客网刷题时碰到的一道题,基础语法篇中的BC8牛牛的字符菱形,我相信在其它地方也有类似的......
  • C语言编程常见错误与防范策略(大纲)
            引言 C语言自1972年诞生以来,因其高效、灵活的特性,在系统编程、嵌入式开发等领域占据了不可替代的地位。然而,C语言的这些特性也是一把双刃剑,容易导致编程错误。本文将总结C语言编程中常见的错误类型,并提出相应的防范策略。本文为大纲,下一章将针对大纲进行举例......
  • C语言程序设计-学生基本信息管理系统
    学生基本信息管理系统题目(1)任务描述为某学校学生管理部门日常管理学生基本信息,设计一个信息管理系统。某学校学生管理部门在新生入学时,会登记每个学生的个人基本信息,以便今后提供给教务处、学生所在系部、毕业工作指导委员会等部门使用。(2)功能要求①根据自己初次入学时填写......
  • C语言数据结构与算法(二叉树)
    1.二叉树的概念及结构1.1概念一棵二叉树是结点的一个有限集合,该集合:1.或者为空2.由一个根节点加上两棵别称为左子树和右子树的二叉树组成特性:1.二叉树不存在度大于2的结点2.二叉树的子树有左右之分,次序不能颠倒,因此二叉树是有序树1.2特殊的二叉树满二叉树:每......
  • C语言中指针类型强转之后解引用出现问题
    函数中传入的参数是指针类型但是该指针类型是类型强转之后传入函数在函数调用过程中解引用指针的时候出现了keil-hardfault。首先查看MSP的值然后在内存中输入msp的值在反汇编窗口中输入地址找到出错的函数发现故障原因是在解引用指针时,由于指针类型出现强转,需要对......
  • 【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
    目录......