Pourquoi utiliser !! lors de la conversion de int bool?

Ce qui peut être une raison pour la conversion d'un nombre entier d'une valeur booléenne de cette façon?

bool booleanValue = !!integerValue;

au lieu de simplement

bool booleanValue = integerValue;

Tout ce que je sais, c'est que dans VC++7 ce dernier va provoquer C4800 avertissement et l'ancien ne sera pas. Est-il une autre différence entre les deux?

  • Après la double négation, la valeur est garantie 0 ou 1; la valeur d'origine pourrait être n'importe quelle valeur int.
  • Mais pourquoi la deuxième instruction de ne pas faire exactement la même chose?
  • Je suppose que la question est pourquoi les anciens ne cause pas un C4800 soit depuis même "le Casting de l'expression de type booléen ne sera pas désactiver l'avertissement, qui est par la conception." (MS)
  • pourquoi ne pas plus de gens de suggérer dans le fait que c'est la bonne réponse. double négatif est très commun dans le code bas-niveau
  • euh, en fait, cela a sa place... les gens sont confus C++ et de C
InformationsquelleAutor sharptooth | 2009-08-21