C语言基础 bool类型

bool类型

C99标准以前,C语言没有定义bool类型,表达式的值0为假,非0为真。所以条件判断语句( if(…)、while(…) )非常灵活,甚至一个指针类型都可以是条件表达式。
为了使程序更清晰,我们常常会给出如下的宏定义:

typedef int BOOL;
#define TRUE 1
#define FALSE 0

这是最常见的写法,能被任何C语言编译器认可。
  
C99标准引入了新的关键字_Bool,它是一个关键字,不是宏定义,通过sizeof(_Bool)得知这个类型占1个字节,而且无论给这个类型的变量赋任何非0整数值,其值都是1,这也说明了他不是其他整数类型的别名。
为了兼容C++,C99标准引入了一个头文件stdbool.h,开发中我们只要引入这个头文件,就可以先C++那样使用bool了。

stdbool.h头文件的定义如下

/*===---- stdbool.h - Standard header for booleans -------------------------===
 *
 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 * See https://llvm.org/LICENSE.txt for license information.
 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 *
 *===-----------------------------------------------------------------------===
 */

#ifndef __STDBOOL_H
#define __STDBOOL_H

/* Don't define bool, true, and false in C++, except as a GNU extension. */
#ifndef __cplusplus
#define bool _Bool
#define true 1
#define false 0
#elif defined(__GNUC__) && !defined(__STRICT_ANSI__)
/* Define _Bool as a GNU extension. */
#define _Bool bool
#if __cplusplus < 201103L
/* For C++98, define bool, false, true as a GNU extension. */
#define bool  bool
#define false false
#define true  true
#endif
#endif

#define __bool_true_false_are_defined 1

#endif /* __STDBOOL_H */

你可能感兴趣的:(C语言基础 bool类型)