bool类型_bool类型什么为真

bool类型_bool类型什么为真转自:http://www.vcgood.com/archives/3709我们知道在C++里有专门的bool类型,用来表示真或假。但是在C语言里没有这样的类型(至少我是一直这么认为的),表达式的值0

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

转自:http://www.vcgood.com/archives/3709

 

我们知道在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类型了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167258.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 傻瓜攻略(一)——MATLAB主成分分析(PCA)代码及结果分析实例「建议收藏」

    傻瓜攻略(一)——MATLAB主成分分析(PCA)代码及结果分析实例「建议收藏」主成分分析主成分分析法(PCA)是一种高效处理多维数据的多元统计分析方法,将主成分分析用于多指标(变量)的综合评价较为普遍。该方法的基本思想是运用较少的变量去解释原始数据中的大部分变异,通过对原始数据相关矩阵内部结构关系的分析和计算,产生一系列互不相关的新变量。根据需要从中选取比原始变量个数少的几个新变量,这些新的变量就是所谓的主成分,它们能够充分解释原始数据的变化。因此,主成分分析法本质上是…

    2022年5月29日
    44
  • 项目各阶段定义及名词解释「建议收藏」

    项目各阶段定义及名词解释「建议收藏」一款硬件产品,例如PC、手机或其他的智能硬件产品,从项目立案到产品研发、实施生产,均要经过一个流程。这流程可以细分为很多小的项目阶段,每个小阶段又都有各自达成目的。使产品研发更加具体,项目管控更加容易

    2022年8月1日
    9
  • C# 二代身份证验证 / VerifyIDCard[通俗易懂]

    C# 二代身份证验证 / VerifyIDCard[通俗易懂]由于现在社会技术的发展,需要验证身份证的合法性越发重要那么我们如何去验证一个身份证是否合法呢?我在以前的时候,特意写过一篇VB.NET查询身份证信息当然它是通过“百度身份证信息查询”的REST接口编写的一个类,当然那个时候并不考虑通过“身份证验证算法”识别身份证是否有效,注意VB.NET的主题是“查询身份证信息”而不是“验证身份证合法性”、我们以上面的“身份

    2022年6月27日
    31
  • hashset自定义去重规则_sql数据去重

    hashset自定义去重规则_sql数据去重publicstaticvoidmain(String[]args){List<String>list=newArrayList<>();list.add(“d”);list.add(“d”);list.add(“d”);System.out.println(list);list=remov…

    2022年9月28日
    1
  • 十进制小数转化为二进制小数[通俗易懂]

    十进制小数转化为二进制小数[通俗易懂]一、二进制数转换成十进制数由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为”按权相加”法。例如把二进制数110.11转换成十进制数。二、十进制数转换为二进制数十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。1.十进制整数转换为二进制整数十进制整数转换为二进制整数采用”除2取余,逆序排列”法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再

    2022年9月25日
    2
  • Win10禁止更新设备驱动的几种方式「建议收藏」

    Win10禁止更新设备驱动的几种方式「建议收藏」1、开始菜单选择运行并输入gpedit.msc打开本地组策略编辑器依次展开计算机配置→管理模板→Windows组件→Windows更新;找到并双击打开Windows更新不包括驱动程序;将未配置或者已禁用改成已启用,然后确定保存即可;右键点击开始菜单选择运行并输入RegEdit或者Cortana输入regedit进行搜索;进入注册表后依次展开:HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Wind

    2022年6月4日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号