Booleanos en C

Tipo de dato bool en C

En el inicio de los tiempos, el lenguaje de programación C no tenía el tipo de dato booleano. De hecho, ni siquiera hoy en día lo tiene como tal, es un simple macro.

Sin embargo, como programadores nos hemos dado a la tarea de implementarlos o de emular su uso. Veamos hoy cómo podemos implementar booleanos en C de dos maneras, analizando ventajas y desventajas de cada uso, así como exponiendo ejemplos.

Método 1: booleanos en C con stdbool.h

Un método que es un estándar y que fue introducido en el C99 es el de usar la librería stdbool.h. Esa librería o encabezado define los tipos true y false; que al final son enteros disfrazados representando el 1 y el 0 respectivamente.

Para declarar y usar una variable booleana en C hacemos esto:

#include<stdio.h>// printf
#include<stdbool.h>// Booleanos
 
int main(){
    bool mayorDeEdad = true;
    if(mayorDeEdad){
        printf("Eres mayor de edad");
    }else{
        printf("NO eres mayor de edad");
    }
}

Esta variable puede tener false o true. Y podemos evaluarla en un simple if.

Por otro lado, podemos tener funciones que regresen booleanos:

#include<stdio.h>// printf
#include<stdbool.h>// Booleanos
 
 
// prototipo
bool esMayorDeEdad(int edad);
 
int main(){
    bool mayorDeEdad = esMayorDeEdad(15);
    if(mayorDeEdad){
        printf("Eres mayor de edad");
    }else{
        printf("NO eres mayor de edad");
    }
}
bool esMayorDeEdad(int edad){
    if(edad >= 18) return true;
    else return false;
}

En ese caso regresamos false o true; y el tipo de dato de retorno es bool. Claro que la función puede acortarse de este modo:

bool esMayorDeEdad(int edad){
    return edad >= 18;
}

Eso es porque la comparación regresará un booleano, entonces mejor regresamos directamente lo que regrese la comparación y nos ahorramos un if.

Mostrando otro ejemplo de booleanos en C también podemos recibir un argumento de tipo booleano:

void prepararTacos(bool conSalsaPicante){
  if(conSalsaPicante){
    //Agregar salsa
  }else{
    // Nada
  }
}

Ahí estamos recibiendo un booleano.

En conclusión podemos usar este tipo de dato como usamos los demás: int, char y esas cosas.

Método 2: tipo de dato bool en C con enteros

Este método se usaba normalmente y muchas personas lo siguen usando. Se trata de usar el tipo de dato entero como booleano, ya que un 0 pasa como false y un 1 (o cualquier otra cosa) como verdadero. Así:

#include<stdio.h>// printf
 
int main(){
    int mayorDeEdad = 1;
    if(mayorDeEdad){
        printf("Eres mayor de edad");
    }else{
        printf("NO eres mayor de edad");
    }
}

No es necesario comparar con if(mayorDeEdad == 1), con poner if(mayorDeEdad) basta. Las funciones también pueden regresar estos enteros y podemos compararlos igualmente:

#include<stdio.h>// printf
 
 
// prototipo
int esMayorDeEdad(int edad);
 
int main(){
    int mayorDeEdad = esMayorDeEdad(15);
    if(mayorDeEdad){
        printf("Eres mayor de edad");
    }else{
        printf("NO eres mayor de edad");
    }
}
int esMayorDeEdad(int edad){
    return edad >= 18;
}

Todo es como cuando trabajábamos con booleanos, pero ahora usando enteros. La última función que vimos allá arriba (para recibir booleanos como parámetros de una función) es esta:

void prepararTacos(int conSalsaPicante){
  if(conSalsaPicante){
    //Agregar salsa
  }else{
    // Nada
  }
}

 

Conclusión y recomendación

Aunque sepamos que internamente el tipo de dato booleano es un entero; podemos usarlo para que las funciones sean más claras.

Yo recomiendo usar el tipo de dato bool, el cual viene en stdbool.h (es decir, el primer método que vimos).

De esta manera tu código será más entendible; porque otro programador leerá tus funciones y si ve que es un booleano sabrá que tu función evalúa algo y te dice si sí o no; en cambio si ve un entero no sabrá si cuenta el tamaño de algo, devuelve un número, una suma u otras cosas

Referencias

Wikibooks: https://en.wikibooks.org/wiki/C_Programming/stdbool.h

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

2 comentarios en “Booleanos en C”

  1. Pingback: Número par o impar sin usar divisiones ni operador módulo en C - Parzibyte's blog

  2. Pingback: Implementación de una pila dinámica en C - Parzibyte's blog

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *