【C语言】中的布尔类型
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语言】中的布尔类型的更多相关文章
- DSP程序中的布尔类型使用
在DSP程序中,布尔类型不能直接拿来用,要定义一下,可以通过定义为枚举类型来定义: typedef enum{FALSE=0,TRUE} BOOL; 一般枚举类型的定义是这样的:enum [枚举名] ...
- C++中的布尔类型和引用
1,C++ 中的布尔类型: 1,C++ 在 C 语言的基础类型系统之上增加了 bool: 1,C 语言中,没有 bool 类型存在,往往都是用整型代替 bool 类型,常用 0 表示假,用 1 表示真 ...
- c语言中自定义bool类型模板
首先,c语言中没有bool类型,只有c++中有,所以需要自定义,即c中表示bool类型的方法: 1.模板1 typedef int bool; #define false 0 #define true ...
- python基础语法_python中的布尔类型详解
转自:http://www.cnblogs.com/521yywzyzhc/p/6264885.html 我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是 ...
- [整理]标准C中的"布尔"类型
C语言提供的基本数据类型:char , int ,float, double. 为什么没有其他语言中常见bool布尔数据类型呢? 1.在标准C语言(ANSI C)中并没有bool数据类型 标准C中,表 ...
- [C] C语言中的布尔值
C不具备显示的布尔类型,所以使用整数来代替,规则是:零是假,任何非零值皆为真. 反过来说,如果逻辑表达式为真其值一定为真,若逻辑表达式为假其值一定为零.
- 简答的理解C语言中的各种类型函数
1.变参函数 变长参数的函数即参数个数可变.参数类型不定 的函数.最常见的例子是printf函数.scanf函数和高级语言的Format函数.在C/C++中,为了通知编译器函数的参数个数和类型可变(即 ...
- C语言中几种类型所占字节数
其实C标准并没有具体给出规定哪个基本类型应该是多少个字节数,而且这个也与OS.编译器有关,比如同样是在32位操作系统,VC++的编译器下int类型为4个字节,而在tuborC下则是2个字节. 下面给出 ...
- 浅析C语言中的整形类型
在C语言中,可以把 字符型.短整形.整形.长整形都看作是整形,同属于整形家族这个大类型. 这些类型的大小,默认是否有符号等一些知识点较零散,较容易混淆,所以特地整理如下. 一 类型存储字节长度说明 ...
随机推荐
- Android 颜色渲染(六) RadialGradient 环形渲染
Android 颜色处理(六) RadialGradient 环形渲染 public RadialGradient(float x, float y, float radius, int[] colo ...
- [Whole Web, Node.js, PM2] Restarting your node.js app on code change using pm2
Aadd watch to the config.json file: { "apps": [{ "name": "App1", " ...
- windows 7 64位 安装oracle 11g R2
1.下载Oracle 11g R2 for Windows的版本 下载地址: http://www.oracle.com/technetwork/database/enterprise-edition ...
- ajax技术的基本概述
大家都知道ajax并非一种新的技术,而是几种原有技术的结合体.它由下列技术组合而成. 1.使用CSS和XHTML来表示. 2. 使用DOM模型来交互和动态显示. 3.使用XMLHttpRequest来 ...
- Devexpress 使用经验 —— ASPxGridView命令行自定义按钮灵活使用
ASPX <dx:ASPxGridView ID="ASPxGridView1" runat="server" DataSourceID="Ob ...
- Bye 14 Hello 15
打开博客.空间 窥探到大家都在写自己的2014,抬头一看日历2015已近在咫尺了,看着别人的成长(例如 今年看了多少书.做了什么项目.工资涨了多少.职位角色的变化.去了多少地方.还有一些发善 ...
- transfrom属性
transfrom可以实现一些形变.常见的有平移.缩放和旋转三种.使用起来很简单: //横纵放大1.3倍 self.imageButton.transform=CGAffineTransformSca ...
- IOS开发之KVC与KVO简述
KVC:Key-Value Coding KVO:Key-Value Observing Person.m #import <Foundation/Foundation.h> @inter ...
- jjQuery 源码分析1: 整体结构
目前阅读的是jQuery 1.11.3的源码,有参考nuysoft的资料. 原来比较喜欢在自己的Evernote上做学习基类,并没有在网上写技术博客的习惯,现在开始学习JS的开源代码,想跟大家多交流, ...
- 专题二、ArrayList序列化技术细节详解
一.绪论 所谓的JAVA序列化与反序列化,序列化就是将JAVA 对象以一种的形式保持,比如存放到硬盘,或是用于传输.反序列化是序列化的一个逆过程. JAVA规定被序列化的对象必须实现java.io.S ...