c語言中bool的用法
時間:
長思709由 分享
c語言中bool的用法
C語言是目前世界上最流行、使用最廣泛的高級程序設(shè)計(jì)語言之一,具有高效、可移植性好等優(yōu)點(diǎn),特別是在嵌入式領(lǐng)域有著廣泛的應(yīng)用。下面小編就跟你們詳細(xì)介紹下c語言中bool的用法,希望對你們有用。
c語言中bool的用法如下:
C99之前沒有定義bool型,在C99中在stdbool.h中定義了_Bool為bool,當(dāng)然true 和 false也沒有定義。但是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++語言里新增的關(guān)鍵字,而FALSE/TRUE是通過#define,這要用途
是解決程序在C與C++中環(huán)境的差異,以下是FALSE/TRUE在windef.h的定義:
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
也就是說FALSE/TRUE是int類型,而false/true是bool類型;所以兩者不一樣的,只不過
我們在使用中沒有這種感覺,因?yàn)镃++會幫你做隱式轉(zhuǎn)換。
2.bool的大小與BOOL的區(qū)別:
bool在C++里是占用1字節(jié),而BOOL是int類型,int類型的大小是視具體環(huán)境而定的;所以來說:
false/true只占用1個字節(jié),而TRUE/FALSE視具體環(huán)境而言,以下是BOOL在windef .h中的定義:typedef int BOOL;
3.NULL與0的區(qū)別:
還是讓我們看一下windef.h中NULL的定義:
#ifndef NULL
#ifdef __cplusplus//這個是指示是用C++來編譯程序
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
所以說:它們沒有區(qū)別,只不過在C里面會做一個強(qiáng)制類型轉(zhuǎn)換。