Algunas personas dicen que no hay tipo bool en lenguaje C, solo en C ++, ¿es cierto?
1 Primero observe el método para representar el tipo bool en c cuando no hay un tipo bool:
typedef int bool;
#define false 0
#define true 1
2 、
typedef int bool;
enumeración {falso, verdadero};
3 、
typedef enum {false, true} bool;
Tal vez muchas personas son como yo, no sé si el lenguaje C actual ya tiene un tipo booleano: a partir del estándar C99, el nombre del tipo es "_Bool".
在此之前的C语言中,使用整型int来表示真假。在输入时:使用非零值表示真;零值表示假。在输出时:真的结果是1,假的结果是0;(这里我所说的“输入”,意思是:当在一个需要布尔值的地方,也就是其它类型转化为布尔类型时,比如 if 条件判断中的的条件;“输出”的意思是:程序的逻辑表达式返回的结果,也就是布尔类型转化为其他类型时,比如 a==b的返回结果,只有0和1两种可能)。
所以,现在只要你的编译器支持C99(我使用的是Dev C++4.9.9.2),你就可以直接使用布尔型了。另外,C99为了让C和C++兼容,增加了一个头文件stdbool.h。里面定义了bool、true、false,让我们可以像C++一样的定义布尔类型。
- Nuestra propia definición de "imitación de Boole"
antes de la norma C99 es compatible, que a menudo imita su propia definición de Boole, hay muchas maneras, hay dos común lo siguiente:
/ * El primer método * /
#define TRUE 1
#define FALSE 0
/ * El segundo método * /
enum bool {false, true};
2. Usando _Bool
Now, simplemente podemos usar _Bool para definir variables booleanas. La longitud del tipo _Bool es 1, y el rango de valores solo puede ser 0 o 1. Cualquier valor distinto de cero asignado al tipo _Bool se convertirá primero a 1, lo que indica verdadero. Asigne un valor de cero al tipo _Bool, el resultado es 0, lo que indica falso. El siguiente es un programa de ejemplo.
#include <stdio.h>
#include <stdlib.h>
int main () {
_Bool a = 1;
_Bool b = 2; / * Use un valor distinto de cero, el valor de b es 1 /
_Bool c = 0;
_Bool d = -1; / Use un valor distinto de cero, el valor de d es 1 * /
printf("a==%d, /n", a);
printf("b==%d, /n", b);
printf("c==%d, /n", c);
printf("d==%d, /n", d);
printf("sizeof(_Bool) == %d /n", sizeof(_Bool));
system("pause");
return EXIT_SUCCESS;
} Los
resultados de la operación son los siguientes: (solo dos valores de 0 y 1)
un1,
b1,
c0,
d1,
sizeof (_Bool) == 1
3. Use stdbool.h
en C ++ para definir variables booleanas a través de bool, y asigne valores a las variables booleanas a través de verdadero y falso. Para permitirnos escribir código compatible con C ++, C99 agregó un archivo de encabezado <stdbool.h>. En gcc, el código fuente de este archivo de encabezado es el siguiente: (Nota, para mayor claridad, se han omitido comentarios sin importancia)
/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
This file is part of GCC.
*/
#ifndef _STDBOOL_H
#define _STDBOOL_H
#ifndef __cplusplus
#define bool _Bool
#define true 1
#define false 0
#else /* __cplusplus ,应用于C++里,这里不用处理它*/
/* 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 */