c語(yǔ)言中bool的用法
時(shí)間:
長(zhǎng)思709由 分享
c語(yǔ)言中bool的用法
C語(yǔ)言是目前世界上最流行、使用最廣泛的高級(jí)程序設(shè)計(jì)語(yǔ)言之一,具有高效、可移植性好等優(yōu)點(diǎn),特別是在嵌入式領(lǐng)域有著廣泛的應(yīng)用。下面小編就跟你們?cè)敿?xì)介紹下c語(yǔ)言中bool的用法,希望對(duì)你們有用。
c語(yǔ)言中bool的用法如下:
C99之前沒(méi)有定義bool型,在C99中在stdbool.h中定義了_Bool為bool,當(dāng)然true 和 false也沒(méi)有定義。但是C++中是有bool型的,并且true 和 false也是有定義的。
所以如果是C99之前的標(biāo)準(zhǔn),需要我們自己定義bool,如
typedef enum {false = 0, true = 1} bool;
/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GCC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING. If not, write to
the Free Software Foundation, 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA. */
/* As a special exception, if you include this header file into source
files compiled by GCC, this header file does not by itself cause
the resulting executable to be covered by the GNU General Public
License. This exception does not however invalidate any other
reasons why the executable file might be covered by the GNU General
Public License. */
/*
* ISO C Standard: 7.16 Boolean type and values <stdbool.h>
*/
#ifndef _STDBOOL_H
#define _STDBOOL_H
#ifndef __cplusplus
#define bool _Bool
#define true 1
#define false 0
#else /* __cplusplus */
/* Supporting <stdbool.h> 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 */
1.FALSE/TRUE與false/true的區(qū)別:
false/true是標(biāo)準(zhǔn)C++語(yǔ)言里新增的關(guān)鍵字,而FALSE/TRUE是通過(guò)#define,這要用途
是解決程序在C與C++中環(huán)境的差異,以下是FALSE/TRUE在windef.h的定義:
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
也就是說(shuō)FALSE/TRUE是int類型,而false/true是bool類型;所以兩者不一樣的,只不過(guò)
我們?cè)谑褂弥袥](méi)有這種感覺(jué),因?yàn)镃++會(huì)幫你做隱式轉(zhuǎn)換。
2.bool的大小與BOOL的區(qū)別:
bool在C++里是占用1字節(jié),而B(niǎo)OOL是int類型,int類型的大小是視具體環(huán)境而定的;所以來(lái)說(shuō):
false/true只占用1個(gè)字節(jié),而TRUE/FALSE視具體環(huán)境而言,以下是BOOL在windef .h中的定義:typedef int BOOL;
3.NULL與0的區(qū)別:
還是讓我們看一下windef.h中NULL的定義:
#ifndef NULL
#ifdef __cplusplus//這個(gè)是指示是用C++來(lái)編譯程序
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
所以說(shuō):它們沒(méi)有區(qū)別,只不過(guò)在C里面會(huì)做一個(gè)強(qiáng)制類型轉(zhuǎn)換。