當前位置

首頁 > 商務英語 > 計算機英語 > c語言中bool的用法

c語言中bool的用法

推薦人: 來源: 閱讀: 2.06W 次
c語言中bool的用法
C語言是目前世界上最流行、使用最廣泛的高級程序設計語言之一,具有高效、可移植性好等優點,特別是在嵌入式領域有着廣泛的應用。下面小編就跟你們詳細介紹下c語言中bool的用法,希望對你們有用。  c語言中bool的用法如下:  C99之前沒有定義bool型,在C99中在stdbool.h中定義了_Bool爲bool,當然true 和 false也沒有定義。但是C++中是有bool型的,並且true 和 false也是有定義的。  所以如果是C99之前的標準,需要我們自己定義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 */  E/TRUE與false/true的區別:  false/true是標準C++語言裏新增的關鍵字,而FALSE/TRUE是通過#define,這要用途  是解決程序在C與C++中環境的差異,以下是FALSE/TRUE在windef.h的定義:  #ifndef FALSE  #define FALSE 0  #endif  #ifndef TRUE  #define TRUE 1  #endif  也就是說FALSE/TRUE是int類型,而false/true是bool類型;所以兩者不一樣的,只不過  我們在使用中沒有這種感覺,因爲C++會幫你做隱式轉換。  的大小與BOOL的區別:  bool在C++裏是佔用1字節,而BOOL是int類型,int類型的大小是視具體環境而定的;所以來說:  false/true只佔用1個字節,而TRUE/FALSE視具體環境而言,以下是BOOL在windef .h中的定義:typedef int BOOL;  與0的區別:  還是讓我們看一下windef.h中NULL的定義:  #ifndef NULL  #ifdef __cplusplus//這個是指示是用C++來編譯程序  #define NULL 0  #else  #define NULL ((void *)0)  #endif  #endif  所以說:它們沒有區別,只不過在C裏面會做一個強制類型轉換。