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

C语言布尔类型占几个字节,浅谈C语言中的布尔(bool)类型相关推荐

  1. c语言 去掉双引号_技术分享|浅谈C语言陷阱和缺陷

    良好的软件架构.清晰的代码结构.掌握硬件.深入理解C语言是防错的要点,人的思维和经验积累对软件可靠性有很大影响.C语言诡异且有种种陷阱和缺陷,需要程序员多年历练才能达到较为完善的地步.软件的质量是由程 ...

  2. c语言函数调用参数调用的太少,浅谈C语言函数调用参数压栈的相关问题

    参数入栈的顺序 以前在面试中被人问到这样的问题,函数调用的时候,参数入栈的顺序是从左向右,还是从右向左.参数的入栈顺序主要看调用方式,一般来说,__cdecl 和__stdcall 都是参数从右到左入 ...

  3. 教师教学质量评价系统c语言,教师课堂教学评价大全_浅谈C语言课堂教学方法

    摘要:编程类课程是计算机系学生普遍感觉较难的学科,课堂气氛往往显得比较沉闷,令学生感觉枯燥无味.为了提高学生的学习兴趣,本文提出"五环节教学法",将学生变为学习的主体,让学生从被动 ...

  4. c语言可变入参中的每个参数的类型可以不同,编程入门:浅谈C语言的可变参数

    C语言中有些函数使用可变参数,比如常见的int printf( const char* format, ...),第一个参数format是固定的,其余的参数的个数和类型都不固定. C语言用va_sta ...

  5. c语言如何将浮点数转换为字节,浅谈C语言整型与浮点型转换

    本篇博客将阐述.讨论的内容: ●int int的范围根据计算机的不同存在16位或32位的差异,以16位举例,最大值为1111 1111 1111 1111,也就是65535,如果出现65536,就会溢 ...

  6. java中double类型占几个字节_java中各种数据类型占用字节数

    1字节(Byte)=8bit java的基本类型 类型 所占字节 byte 1 short 2 int 4 long 8 float 4 double 8 char 2 String中字母和汉字所占字 ...

  7. C++ string类型占几个字节

          在C语言中我们操作字符串肯定用到的是指针或者数组,这样相对来说对字符串的处理还是比较麻烦的,好在C++中提供了 string 类型的支持,让我们在处理字符串时方便了许多.这篇文章并不是讲解 ...

  8. C++中的string 类型占几个字节

    C++中的string 类型占几个字节 一:先看一道面面试题: 题目是要求输出:TrendMicroSoftUSCN 然后要求修改程序,使程序能输出以上结果.代码如下: #include <io ...

  9. java中double类型占几个字节_面试官:Java 中有几种基本数据类型是什么?各自占用多少字节?...

    认识基本数据类型 在学习基本数据类型之前,我们先认识一下这两个单词:1.bit --位:位是计算机中存储数据的最小单位,指二进制数中的一个位数,其值为"0"或"1&quo ...

最新文章

  1. 使用 jetty-maven-plugin发布maven项目
  2. 【HIMI转载推荐之三】基于Cocos2dx引擎UI扩展引擎包[cocos2d-x-3c]
  3. 分享一个高质量的 小程序UI框架
  4. Inside Dynamics Axapta源代码赏析(五)
  5. c语言中return语句例子,C语言 return 语句-嗨客网
  6. pythonappium环境搭建_python appium环境搭建
  7. 【机器学习基础】半监督算法概览(Python)
  8. android JNI调用(Android Studio 3.0.1)(转)
  9. .NET下的验证码控件John.Controls.ValidateCode2V for .NET beta1
  10. 指定范围内的水仙数(C语言)
  11. phpcms上线步骤,无法生成缓存,页面空白原因
  12. 常用的API函数汇总
  13. 【无线网络技术专题(十一)】无线网络常用软件与工具大全
  14. 那些年的广告语【持续更】
  15. div+css入门知识
  16. 疯狂原始人手游怎么用电脑玩 疯狂原始人手游PC电脑版教程
  17. 电视剧中的计算机学霸,电视剧中的九位学霸男神,真希望身边有位颜值又高学习又好的男生...
  18. Kanzi软件开发与Android的关系
  19. 突变!微软将结束对Office Android应用的支持
  20. 阿里云大数据助理工程师认证考试考什么内容?

热门文章

  1. 计算机出现远程错误怎么解决办法,win7系统远程桌面出现错误0x204的处理方法
  2. AirSim中只能同时起飞五架飞机的问题
  3. 什么是哈希?什么是哈希函数?什么是哈希树?
  4. 如何使用TestFlight进行app测试
  5. Android 屏幕适配(修改系统字体大小、显示大小、修改分辨率相关适配)
  6. matlab互相关运算
  7. 在线学习的 40 个好地方(完整版)
  8. FHQ Treap及其可持久化与朝鲜树式重构
  9. 【AUTOSAR】BMS开发实际项目讲解(三十一)----电池管理系统电池热管理功能
  10. 第十二课 Java基础篇——面向对象进阶(一)