Après avoir discuté avec Tom “zdimension” Niget, je suis tombé sur cela :
Pour s’amuser, il a donc créé un programme mystère comme il suit :
Après une rapide recherche Google, j’ai trouvé et testé la solution donnée dans ce stackoverflow :
Create bool value which is neither true nor false
Mon programme pour tester cette solution :
#include <stdio.h>
#include <stdbool.h>
bool mystere()
{
int i = 42;
return *(bool *)(&i);
}
int main()
{
bool x = mystere();
switch (x)
{
case true:
puts("x est true");
break;
case false:
puts("x est false");
break;
default:
puts("???");
}
return 0;
}
Et en effet quand on compile le programme, on obtient :
$ gcc -w -o code code.c && ./code
???