Duplicar posibles:
Double Negation in C++ code¿Cuál es el uso de "!!" (negando dos veces)?
Digamos:
bool var = !!true;
Se asignará "verdadero" a la variable. Parece inútil, pero yo estaba buscando en la definición de Visual Studio de "valer", y es:
#define assert(_Expression) (void)((!!(_Expression)) || (_wassert(_CRT_WIDE(#_Expression), _CRT_WIDE(__FILE__), __LINE__), 0))
¿Por qué se niega la "expresión de la época" dos veces?
Me pregunto si quieren forzar el "!" operador a llamar (en el caso de que esté sobrecargado), pero eso no parece ser una buena razón.
Buena pregunta, +1 – jlledom
http://stackoverflow.com/questions/248693/double-negation-in-c-code – cnicutar
http://stackoverflow.com/questions/1310344/why-use-when-converting -int-to-bool – cnicutar