Il est utilisé parce que le langage C (et quelques pré-standard compilateurs C++ trop) n'a pas eu l' bool
, int
. Si l' int
s ont été utilisés pour représenter des valeurs logiques: 0
était censé signifier false
, et tout le reste a été true
. L' !
opérateur de retourner en 1
de 0
et 0
de tout le reste. Double - !
a été utilisé pour inverser les, et il était là pour s'assurer que la valeur est 0
ou 1
en fonction de sa valeur logique.
En C++, depuis l'adoption d'une bonne bool
type, il n'y a pas besoin de faire cela. Mais vous ne pouvez pas simplement mettre à jour toutes les anciennes sources, et vous ne devriez pas avoir à, le, en raison de la compatibilité descendante de C à C++ (la plupart du temps). Mais beaucoup de gens le font encore, de la même raison: leur code en arrière-compatible avec les anciens compilateurs qui ne comprends toujours pas bool
s.
Et c'est la seule vraie réponse. D'autres réponses sont trompeuses.