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

C语言提供的基本数据类型:char , int ,float, double。

为什么没有其他语言中常见bool布尔数据类型呢?

1.在标准C语言(ANSI C)中并没有bool数据类型

标准C中,表达式的值0为假,非0为真。一般,为了提高代码可阅读性,自定义3个int类型的宏:


#include <stdio.h>

#define bool int
#define false 0
#define true 1

int main(){
bool result = true;//true的值实际是int类型的1
}

当然,使用char类型来定义宏也是可以的。

2.C语言不是没有布尔类型, 而是在C99标准之前没有
  
现在,在C99中,通过在源文件中包含stdbool.h这个头文件,就可以在C语言里使用_Bool类型了,这是C99标准新增的头文件,引入_Bool数据类型,和C++兼容。

1 #define bool _Bool
2 #define true 1
3 #define false 0

注意:VS2010的编译器只支持ANSI C,不支持C99。

3.我们必须知道的:
  (1).一般提到标准C,指的是“ANSI
C”,有时称为"C89"。
  (2).ANSI C和ISO C的历史

C 的第一个标准是由ANSI发布的。虽然这份文档后来被国际标准化组织(ISO)采纳并且ISO发布的修订版也被ANSI采纳了,但名称ANSI C(而不是
ISO C)仍被广泛使用。一些软件开发者使用ISO C,还有一些使用 Standard C。

C89
1983年,美国国家标准协会组成了一个委员会,X3J11,为了创立 C
的一套标准。经过漫长而艰苦的过程,该标准于1989年完成,并在作为ANSI X3.159-1989"Programming Language
C"正式生效。这个版本的语言经常被称作"ANSI C",或有时称为"C89"(为了区别C99)。

C90
在1990年,ANSI C标准(带有一些小改动)被美国国家标准协会采纳为ISO/IEC
9899:1990。这个版本有时候称为C90。因此,C89和C90通常指同一种语言。

C99
主条目:C99
在2000年三月,ANSI 采纳了 ISO/IEC 9899:1999
标准。这个标准通常指C99。

C11
主条目:C11
在2011年12月,ANSI 采纳了 ISO/IEC 9899:2011
标准。这个标准通常即C11,它是C程序语言的现行标准

参考:
1.ANSI C

2.C99

[整理]标准C中的"布尔"类型,布布扣,bubuko.com

时间: 2024-12-25 08:44:46

[整理]标准C中的"布尔"类型的相关文章

Python学习笔记整理(三)Python中的动态类型简介

Python中只有一个赋值模型 一.缺少类型声明语句的情况 在Python中,类型是在运行过程中自动决定的,而不是通过代码声明.这意味着没有必要事声明变量.只要记住,这个概念实质上对变量,对象和它们之间的关系都适用.那么这个概念也容易理解并掌握. 1.变量,对象和引用 变量创建:一个变量,当代码第一次给它赋值时它就被创建了.之后的赋值将会改变已创建的变量名的值.Python在代码运行之前先检测变量名,可以当成是最初的赋值创建变量. 变量类型:变量永远不会有任何的它关联的类型信息或约束.类型的概念

【转载】标准c++中的string类型的用法

http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯定的.也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法.其实,可能很多人很可能会忽略掉标准C++中string类的使

Python中的布尔类型

Python的布尔类型有两个值:True和False(注意大小写要区分) 逻辑运算: 1.与:and(两个都为True,结果才为True) 2.或:or(只要一个为True,则为True) 3.非:not(把True变为False,把False变为True) 短路运算: 布尔类型还可以与其他数据类型进行逻辑运算,Python规定:0.空字符串.None为False,其他数值和非空字符串为True. 1.在计算a and b时,如果a是True,则计算结果取决于b,则返回b:如果a是False,则

Odoo “坑” 系列之 XML中的布尔类型

在Odoo中试图通过XML方式更新某条Record的值,却意外发现根本不能更新,经查,对于XML中Boolean类型的字段,更新的方式应该采用eval的方式.

字符串0.在php和js中转换为布尔类型 值是false还是true

在php 中 $a = '0'; $b = (bool)$a; var_dump($a);//输出false 在js中官方说明: Note:If the value parameter is omitted, or is 0, -0, null, , false, undefined, or NaN, the object is set to false. Otherwise it is set to true (even with the string false)! 测试: <script 

Python中布尔类型

我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算: 与运算:只有两个布尔值都为 True 时,计算结果才为 True. True and True   # ==> TrueTrue and False   # ==> FalseFalse and True   # ==> FalseFalse and False   # ==> False或运算:只要有一个布尔值为 True,计算结果就是 True. True or

一起talk C栗子吧(第一百六十八回:C语言实例--C语言中的布尔--bool类型)

各位看官们,大家好,上一回中咱们说的是控制终端字符颜色的例子,这一回咱们说的例子是:C语言中的布尔–bool类型 .闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,在数字电路中我们经常会遇到布尔类型,其实在编写软件的过程中也会使用布尔类型.布尔类型的变量只有两种值:真和假.在实际的编程过程中,我们经常定义宏,然后使用1表示真,0表示假.下面是具体的例子: #define TRUE 1 #define FALSE 0 例子中定义了两个宏,一个是TRUE,它的值是1,表示真:另外一个是F

python学习第三天 --布尔类型

我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算: 与运算:只有两个布尔值都为 True 时,计算结果才为 True. True and True # ==> True True and False # ==> False False and True # ==> False False and False # ==> False 或运算:只要有一个布尔值为 True,计算结果就是 True. True or True

黑马程序员----OC中含有BOOL类型

一.BOOL类型 OC中有布尔类型 BOOL(C语言中没有布尔类型) 二.BOOL类型的本质 typedef signed char BOOL; 三.BOOL类型的取值范围 BOOL类型的变量又2种取值:YES .NO #define YES (BOOL)1 #define NO (BOOL)0 四.代码练习: 运行结果: