c: bool

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++一样的定义布尔类型。
  1. 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,
b
1,
c0,
d
1,
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 */
240 artículos originales publicados · 35 elogiados · 110,000 visitas

Supongo que te gusta

Origin blog.csdn.net/paulkg12/article/details/105359968
Recomendado
Clasificación