浅谈C语言中的布尔(bool)类型

2023-05-16

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

/**********************************************************************************************************************


地址:http://niehan.blog.techweb.com.cn/archives/228.html

*********************************************************************************************************************/

  我们知道在C++里有专门的bool类型,用来表示真或假。但是在C语言里没有这样的类型(至少我是一直这么认为的),表达式的值0为假,非0为真。所以条件判断语句( if(…)、while(…) )非常灵活,甚至一个指针类型都可以是条件表达式。

  为了使程序更清晰,我们常常会给出如下的宏定义:

  typedef int BOOL;

  #define TRUE 1

  #define FALSE 0

  这是最常见的写法,能被任何C语言编译器认可。

  今天我在一段程序里看见这么一行 #include ,这个陌生的头文件还以std打头而且还和bool有关,引起了我的警觉,立刻百度之。得知这是C99标准新增的头文件,意在引入bool类型,使之和C++兼容。随后我看了一下这个头文件的源代码,内容如下:

  /*

  * ISO C Standard: 7.16 Boolean type and values

  */

  #ifndef _STDBOOL_H

  #define _STDBOOL_H

  #ifndef __cplusplus

  #define bool _Bool

  #define true 1

  #define false 0

  #else /* __cplusplus */

  /* Supporting in C++ is a GCC extension. */

  #define _Bool bool

  #define bool bool

  #define false false

  #define true true

  #endif /* __cplusplus */

  /* Signal that all the definitions are present. */

  #define __bool_true_false_are_defined 1

  #endif /* stdbool.h */

  这个头文件很短,而且也很明了,不过我对_Bool这个类型产生的兴趣。又一翻百度,发现这是C99标准引入的新的关键字。对,是关键字,而不是宏定义,也不是typedef。通过sizeof(_Bool);得知这个类型占1个字节,而且无论给这个类型的变量赋任何非0整数值,其值都是1,这也说明了他不是其他整数类型的别名。

  好了,其实说白了,C语言不是没有布尔类型,只能说在C99标准之前没有。现在只要在源文件中包含stdbool.h这个头文件,就可以在C语言里像C++那样使用bool类型了。



           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浅谈C语言中的布尔(bool)类型 的相关文章

  • linux学习之进程

    进程概念 xff1a 活跃度程序 xff0c 占用系统资源 xff0c 在内存中执行产生一个进程 孤儿进程 xff1a 父进程先于子进程结束 xff0c 则子进程称为孤儿进程 xff0c 并且这个子进程被init进程回收 include l
  • 使用libcurl实现http通信——post上传数据并获取response

    接口释义 使用libcurl实现http通信 get获取response 代码实现 size t span class token function responseStr span span class token punctuation
  • C语言学习之sprintf

    sprintf函数介绍 xff1a 该函数原型为 xff1a int sprintf char str const char format 该函数的功能为 xff1a 本该输出到显示上的数据 xff0c 改为输出到str所指导内存空间中 x
  • linux学习之存储器

    存储器的种类 xff1a 分为易失性存储器和非易失性存储器 易失性存储器 掉电数据会丢失 读写速度快 xff1a RAM random access memory 随机存储内存 又分为DRAM xff08 动态随机存储内存 xff09 和S
  • HTTP请求报文(请求行、请求头、请求体)

    HTTP协议 1 简介 HTTP协议 xff08 Hyper Text Transfer Protocol xff0c 超文本传输协议 xff09 是用于从万维网 xff08 WWW World Wide Web xff09 服务器传输超文
  • UART详解

    UART 通用异步收发传输器 xff08 Universal Asynchronous Receiver Transmitter xff0c 通常称作UART 是一种异步全双工串行通信协议 xff0c 它将要传输的资料在串行通信与并行通信之
  • 基于STM32的NB-IoT模块驱动

    一 概述 目前这个NB IoT在国内还是比较火的 xff0c 最近刚好使用了一款NB IoT模块 将驱动程序贡献给大家 希望能对用到的朋友有点帮助 二 NB IoT模块介绍 本次采用的是有人物联网公司的WHNB75模块 xff08 支持电信
  • 将十六进制转换为对应的字符串,将字符串转换为对应的十六进制字符串,

    功能 xff1a 将输入的字符串转成对应的HEX 16进制格式 作者 xff1a 贺远 日期 xff1a 2019 05 15 参数 xff1a hexdata 要转换的HEX数字 n 字符串长度 xff0c buff 输出缓存区 返回值
  • MPU6050工作原理及STM32控制MPU6050

    一 简介 1 要想知道MPU6050工作原理 xff0c 得先了解下面俩个传感器 xff1a 陀螺仪传感器 xff1a 陀螺仪的原理就是 xff0c 一个旋转物体的 旋转轴所指的方向在不受外力影响时 xff0c 是不会改变的 人们根据这个道
  • 嵌入式之路

    前言 xff1a 作为一名计算机科学与技术专业的学生 xff0c 我报考这个专业 xff0c 是在我高考失利 xff0c 心灰意冷的情况下 xff0c 我大哥他给我推荐的我当时想了想自己也好像没有啥特别擅长的或者特别感兴趣的事 于是就这样我
  • MG995舵机工作原理及基于STM32的驱动源代码

    MG995舵机工作原理及基于STM32的驱动源代码 一 MG995舵机工作原理 1 MG995舵机简介 产品型号 MG995 产品尺寸 40 7 19 7 42 9mm 产品重量 55g 工作扭矩 13KG cm 反应转速 53 62R M
  • C语言将32位数字转换为四个8位的数字,或者字节

    转化为16位或其他的类似 xff1a span class hljs preprocessor include lt stdio h gt span span class hljs keyword int span main span cl
  • 使用catkin_create_pkg命令创建rospkg时出现错误: argument --rosdistro is required 的解决方法

    文章目录 1 问题描述2 解决方法 1 问题描述 创建一个ros包时需要用到catkin create pkg命令 xff0c 其语法为 xff1a catkin create pkg span class token operator l
  • PID算法的解析

    LZ以前有个小小的理想 xff0c 就是让手边的MCU自己 思考 起来 xff0c 写出真正带算法的程序 前段时间做一个比赛项目的过程中 xff0c 对经典 实用的PID算法有了一点点自己的理解 xff0c 就写了这些 xff0c 与大家分

随机推荐