C语言中的布尔类型

一、相关基础知识

首先bool  true  false为C++中的关键字,C语言中默认不支持这几个字符!

二、具体内容

在C89 (ANSI C)标准中没有定义与布尔类型相关的内容

但在C99标准中新定义了一个新的关键字_Bool ,以及新增了一个头文件 <stdbool.h>规范了布尔类型的操作,方便程序员进行调用!

在<stdbool.h>头文件中定义了如下内容:

#define bool_Bool

这样在支持C99标准的编译器下只要包含stdbool.h ,就能非常方便的使用我们常用的bool  false  true来操作布尔类型

但有的编译器可能不支持C99标准!即无法使用关键字_Bool以及可能无法包含stdbool.h头文件,所以我们常可以自行定义一些布尔类型的操作:

#define bool int

#define true 1

#define false 0

三、分析总结

即在不支持C99标准的编译器中无法使用_Bool以及包含头文件stdbool.h,在支持C99标准的编译器中可以无条件使用_Bool,因为它是关键字,它的值只能为0或1,以及若想使用bool,false,true则必须需包含头文件stdbool.h

四、实例测试代码

用如下程序在VS2015中测试:

#include<stdio.h>

int main(void)

{

_Bool a = -112;

printf("%d\n",a);

getchar();

return 0;

}

,则输出0,若给_Bool 型的a赋值其他的任何值,都会被转变成1,也即非0都会变成1!

下列程序在VS2015中通过编译,说明VS2015支持C99标准

#include<stdio.h>

#include<stdbool.h>

int main(void)

{

_Bool a = 1;

bool b = true;

bool c = false;

if (a == true)

{

printf("%d\n", a);

printf("%d\n", b);

printf("%d\n", c);

}

getchar();

return 0;

}

【C语言】中的布尔类型的更多相关文章

  1. DSP程序中的布尔类型使用

    在DSP程序中,布尔类型不能直接拿来用,要定义一下,可以通过定义为枚举类型来定义: typedef enum{FALSE=0,TRUE} BOOL; 一般枚举类型的定义是这样的:enum [枚举名] ...

  2. C++中的布尔类型和引用

    1,C++ 中的布尔类型: 1,C++ 在 C 语言的基础类型系统之上增加了 bool: 1,C 语言中,没有 bool 类型存在,往往都是用整型代替 bool 类型,常用 0 表示假,用 1 表示真 ...

  3. c语言中自定义bool类型模板

    首先,c语言中没有bool类型,只有c++中有,所以需要自定义,即c中表示bool类型的方法: 1.模板1 typedef int bool; #define false 0 #define true ...

  4. python基础语法_python中的布尔类型详解

    转自:http://www.cnblogs.com/521yywzyzhc/p/6264885.html   我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是 ...

  5. [整理]标准C中的"布尔"类型

    C语言提供的基本数据类型:char , int ,float, double. 为什么没有其他语言中常见bool布尔数据类型呢? 1.在标准C语言(ANSI C)中并没有bool数据类型 标准C中,表 ...

  6. [C] C语言中的布尔值

    C不具备显示的布尔类型,所以使用整数来代替,规则是:零是假,任何非零值皆为真. 反过来说,如果逻辑表达式为真其值一定为真,若逻辑表达式为假其值一定为零.

  7. 简答的理解C语言中的各种类型函数

    1.变参函数 变长参数的函数即参数个数可变.参数类型不定 的函数.最常见的例子是printf函数.scanf函数和高级语言的Format函数.在C/C++中,为了通知编译器函数的参数个数和类型可变(即 ...

  8. C语言中几种类型所占字节数

    其实C标准并没有具体给出规定哪个基本类型应该是多少个字节数,而且这个也与OS.编译器有关,比如同样是在32位操作系统,VC++的编译器下int类型为4个字节,而在tuborC下则是2个字节. 下面给出 ...

  9. 浅析C语言中的整形类型

    在C语言中,可以把 字符型.短整形.整形.长整形都看作是整形,同属于整形家族这个大类型. 这些类型的大小,默认是否有符号等一些知识点较零散,较容易混淆,所以特地整理如下.   一 类型存储字节长度说明 ...

随机推荐

  1. core dump + LINUX 内核系列博客

    参考:http://www.cnblogs.com/ahuo/category/72819.html http://blog.csdn.net/tenfyguo/article/details/815 ...

  2. PHP克隆魔术方法

    克隆对象 __clone() $p2=clone $p; $p=>say(); 克隆对象的时候自动调用的方法 作用和构造方法一样是对新克隆的对象进行初始化 在这个方法中$this是副本所以可以给 ...

  3. 利用QT制作我们自己的一个计算器

    有了前面的经验就比较容易创建一个 属于我们自己的计算器了. 一些简单的拖拽就可以实现了. 界面设计部分: 转到槽之后的代码部分: #include "widget.h" #incl ...

  4. [Form Builder]Form中的validate验证事件

    转:http://yedward.net/?id=70 Form的validate行为可以由一个总的form级别的validation属性来控制,可以通过set_form_property来设置成PR ...

  5. Ubuntu 14.04 LAMP搭建小记

    文章目录 LAMP WinQQ Ubuntu 的使用的建模工具 JDK Chormium flash Eclipse 无法找到Jre LAMP 参考资料: 1. 安装php环境   http://ww ...

  6. postgresql 行转列,列转行后加入到一个整体数据

    这里行转列的基本思想就是使用max,因为其他列下面都是NULL,所以可以Max最后就只能得到有值的这行 普通的查询: SELECT icd , case when (ROW_NUMBER() OVER ...

  7. 20160314 Servlet 入门

    一.Servlet 1.sun提供的一种动态web资源开发技术.本质上就是一段java小程序.可以将Servlet加入到Servlet容器中运行. *Servlet容器 -- 能够运行Servlet的 ...

  8. SqlServer2008误操作数据(delete或者update)后恢复数据

    实际工作中,有时会直接在数据库中操作数据,比如对数据进行delete或者update操作,当进行这些操作的时候,如果没有加上where条件或者where条件不合理,那么导致的结果可想而知,如果操作的又 ...

  9. MVC小系列(十九)【mvc与站点地图】

    我的MvcSiteMap地图主要由实体文件,XML配置文件,C#调用文件组成,当然为了前台调用方法,可以为HtmlHelper添加一个扩展方法 第一步 定义站点地图实体 public class Mv ...

  10. PHP中刷新输出缓冲

    http://www.cnblogs.com/mutuan/archive/2012/03/18/2404957.html PHP中刷新输出缓冲buffer是一个内存地址空间,Linux系统默认大小一 ...