C语言的布尔类型(_Bool)

也许很多人都和我一样,不知道现在的C语言已经有了布尔型:从C99标准开始,类型名字为“_Bool”。

在此之前的C语言中,使用整型int来表示真假。在输入时:使用非零值表示真;零值表示假。在输出时:真的结果是1,假的结果是0;(这里我所说的“输入”,意思是:当在一个需要布尔值的地方,也就是其它类型转化为布尔类型时,比如 if 条件判断中的的条件;“输出”的意思是:程序的逻辑表达式返回的结果,也就是布尔类型转化为其他类型时,比如 a==b的返回结果,只有0和1两种可能)。

所以,现在只要你的编译器支持C99(我使用的是Dev C++4.9.9.2),你就可以直接使用布尔型了。另外,C99为了让C和C++兼容,增加了一个头文件stdbool.h。里面定义了bool、true、false,让我们可以像C++一样的定义布尔类型。

1. 我们自己定义的“仿布尔型”

在C99标准被支持之前,我们常常自己模仿定义布尔型,方式有很多种,常见的有下面两种:

/* 第一种方法 */ #define TRUE 1 #define FALSE 0 /* 第二种方法 */ enum bool{false, true};

2. 使用_Bool

现在,我们可以简单的使用 _Bool 来定义布尔型变量。_Bool类型长度为1,只能取值范围为0或1。将任意非零值赋值给_Bool类型,都会先转换为1,表示真。将零值赋值给_Bool类型,结果为0,表示假。 下面是一个例子程序。

#include #include int main(){ _Bool a = 1; _Bool b = 2; /* 使用非零值,b的值为1 */ _Bool c = 0; _Bool d = -1; /* 使用非零值,d的值为1 */ printf("a==%d, /n", a); printf("b==%d, /n", b); printf("c==%d, /n", c); printf("d==%d, /n", d); printf("sizeof(_Bool) == %d /n", sizeof(_Bool)); system("pause"); return EXIT_SUCCESS; }

运行结果如下:(只有0和1两种取值)

a==1, b==1, c==0, d==1, sizeof(_Bool) == 1

3. 使用stdbool.h

在C++中,通过bool来定义布尔变量,通过true和false对布尔变量进行赋值。C99为了让我们能够写出与C++兼容的代码,添加了一个头文件。在gcc中,这个头文件的源码如下:(注,为了清楚,不重要的注释部分已经省略)

/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. This file is part of GCC. */ #ifndef _STDBOOL_H #define _STDBOOL_H #ifndef __cplusplus #define bool_Bool #define true1 #define false0 #else /* __cplusplus ,应用于C++里,这里不用处理它*/ /* Supporting in C++ is a GCC extension. */ #define _Boolbool #define boolbool #define falsefalse #define truetrue #endif /* __cplusplus */ /* Signal that all the definitions are present. */ #define __bool_true_false_are_defined1 #endif/* stdbool.h */

可见,stdbool.h中定义了4

c语言中的布尔类型头文件,C语言的布尔类型(_Bool)相关推荐

  1. c语言中关于不包含头文件string.h仍然可以使用strlen函数以及strlen函数计算数组时结果问题

    先说头文件string.h里的strlen函数 strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串 ...

  2. c语言使用位运算符包含头文件,C语言的运算符

    c语言中可以使用加减乘除(+,-,*,/)以及取余(%)这些操作符 注意点: a.0不能做除数,不能对0进行取余,0.0可以做除数,结果是无穷大. b.取余操作的两边必须是整数: c.两个整数相除,结 ...

  3. c语言处理字符串函数的头文件,C语言字符处理函数 - 20131125的个人空间 - OSCHINA - 中文开源技术交流社区...

    C语言提供了丰富的字符串处理函数, 大致可分为字符串的输入.输出.合并.修改.比较.转换.复制.搜索几类. 使用这些函数可大大减轻编程的负担.用于输入输出的字符串函数,在使用前应包含头文件" ...

  4. c语言中的stdbool.h头文件,【C语言】中的stdbool.h头文件

    C语言中的stdbool.h头文件 一.相关基础知识 二.具体内容 Win7下安装的VS2015中的stdbool.h的位置为: F:\Program Files (x86)\Microsoft Vi ...

  5. C语言高级技巧-在Makefile中引用你的头文件

    在Makefile中添加头文 代码仓库:Makefile中添加头文件引用 我们常这样写C程序: #inlcude <stdio.h>int main(int argc, char *arg ...

  6. bool类型头文件_[C++基础入门] 2、数据类型

    点击上方 蓝字 关注我呀! [C++基础入门] 2.数据类型 文章目录 2 数据类型 2.1 整型 2.2 sizeof关键字 2.3 实型(浮点型) 2.4 字符型 2.5 转义字符 2.6 字符串 ...

  7. c语言设置输出字符大小_C语言中常用的几个头文件及库函数

    点击上方"C语言中文社区",选择"设为星标★" 技术干货第一时间送达! 来源:https://www.jb51.net/article/124594.htm 这 ...

  8. c语言的所有头文件,C语言所有头文件.doc

    C语言所有头文件 C语言所有头文件 stdlib.h包含了很多标准函数和标准宏定义,比如NULL, EXIT_SUCCESS等. ctype.h包含了很多类型定义 string.h包含了字符串操作相关 ...

  9. 单片机sleep函数的头文件_c语言的 sleep函数到底在哪个头文件里啊

    展开全部 在里面. 在VC中使用时,sleep函数的头文件为windows.h,在Linux下,gcc编译器中,使用的头文件因gcc版本62616964757a686964616fe59b9ee7ad ...

  10. go语言中同一个package下的文件相互引用怎么做?

    go语言中同一个package下的文件相互引用怎么做? go 里面一个目录为一个package, 一个package级别的func, type, 变量, 常量, 这个package下的所有文件里的代码 ...

最新文章

  1. 如果地府需要一个后台管理系统,你会如何设计?
  2. PostgreSQL在何处处理 sql查询之四十六
  3. MFC子线程访问主线程对话框程序的控件对象
  4. Java面试知识点:集合、Set、泛型、HashSet、HashMap
  5. (六)企业部分之jdk
  6. ctreectrl 设置选中_CTreeCtrl点击获得选中项
  7. ubuntu上安装python3.7教程_给ubuntu18安装python3.7的详细教程
  8. 实验报告:统计字符串中子字符串出现的次数
  9. 如何用IDEA打包jar包
  10. 协议实例说明--租房
  11. 网站使用手机相机_使用“互通相机”把你的iPhone手机变成Mac的心灵之窗!
  12. 使用模板消息及利用模板消息群发的说明
  13. 计算机辅助手段在英语教学中使用,试谈计算机在英语教学中的辅助作用
  14. java npv,NPV,NPVR,PI和IRR存在数量关系。()
  15. 至联云解析:为什么说web3.0是IPFS的天下?
  16. 我想使用 fGarch 建立egARCH(1,1)模型
  17. Android 画画板(OnTouchListener 应用)
  18. 五险一金 - 医疗保险(常见问题)
  19. Eclipse 在线安装SVN插件
  20. image 微信小程序flex_微信小程序view标签以及display:flex的测试

热门文章

  1. pythonurllib新浪微博_定向爬虫 - Python模拟新浪微博登录
  2. 易趋携手电气风电,推进产品研发项目管理能力进阶
  3. 网络存储服务器dsm系统,群晖nas网络存储器常用解决方案
  4. Priest and Devil
  5. 大于号--小于号转义符
  6. 关于Windows下模拟Shift+END(功能键)无效问题
  7. 夯实Java基础系列10:深入理解Java中的异常体系
  8. c语言编写生日祝福语大全,生日卡片祝福语(精选50句)
  9. Revel框架基本使用和搭建教程
  10. matlab subs的用法,Matlab subs函數的用法