martes, 16 de octubre de 2012

True y False en C

Mientras que trasteas con C se te presenta un problema: parece como si los booleanos no existieran. Pero, ¿cómo no van a existir en un lenguaje tan extendido?

Me refiero a que en C no existe una variable reservada que sea true o false a diferencia de otros lenguajes como Java o Python. C tiene truco:
  • Para true, C devuelve cualquier número distinto de 0.
  • Para false, C devuelve 0.
Con lo cual, para demostrar la veracidad o falsedad de una declaración solo tendremos que ver si es 0 o no.
Así podremos hacer cosas que antes se nos complicaban. Como, por ejemplo, identificar si un caracter está en mayúsculas o en minúsculas:

#include <stdio.h>
#include <ctype.h>
int main() {
    char c;
    scanf("%c", &c);
    if (islower(c)!=0) { /*Mira a ver si se cumple que c es minúscula (si la condición es true)*/
        printf("Es minúscula");
    } else printf("Es mayúscula");
}

*ctype.h es una librería bastante útil. Comprueba si un caracter está en blanco, es un número, una letra o un signo de puntuación, aparte de comprobar si es mayúscula o minúscula.

Sin embargo, a diferencia de Python, si quieremos repetir un bucle indefinidamente tendremos que poner una obviedad, lo que (en mi opinión) le quita sofisticación al código.

PYTHON:

while True:
     a=a+1


C:

while (1==1) {
    a=a++
}

No hay comentarios: