不卡AV在线|网页在线观看无码高清|亚洲国产亚洲国产|国产伦精品一区二区三区免费视频

學(xué)習(xí)啦 > 學(xué)習(xí)英語(yǔ) > 專業(yè)英語(yǔ) > 計(jì)算機(jī)英語(yǔ) > c語(yǔ)言中bool的用法

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)換。
522622