C, C++: Dupla negação para conversão em booleano

Em C não existe um tipo nativo booleano, temos 0 como falso e tudo diferente de 0 é verdadeiro. Em C++ existe o tipo booleano, onde verdadeiro e falso correspondem respectivamente a 0 e 1.

Uma forma de fazer um “cast” em C para um tipo booleano compatível com C++ seria usando a dupla negação, como no exemplo a seguir.

int value1 = 0;
int value2 = 1;
int value3 = 50;
int value4 = -1;

printf("value1 = %d\n", !!value1); // Imprime value1 = 0
printf("value2 = %d\n", !!value2); // Imprime value2 = 1
printf("value3 = %d\n", !!value3); // Imprime value3 = 1
printf("value4 = %d\n", !!value4); // Imprime value4 = 1
This entry was posted in C, CPP and tagged , , , , , , . Bookmark the permalink.

One Response to C, C++: Dupla negação para conversão em booleano

  1. Douglas says:

    “Em C++ existe o tipo booleano, onde verdadeiro e falso correspondem respectivamente a 0 e 1.”

    Não seria o contrário?

Comments are closed.