Duplicar posible:
Double Negation in C++ code.¿Cuál es el propósito de un doble negativo en la definición de macro, como (!! (expr))?
estoy leyendo una base de código, y encontrar algo como esto:
#define uassert(msgid, msg, expr) (void)((!!(expr))||(uasserted(msgid, msg), 0))
No puedo entender por qué (!! (expr)) se usa en lugar de un solo (expr). De todos modos, un doble negativo significa positivo, ¿no? ¿Me estoy perdiendo de algo?
¡Ni siquiera puedo descubrir cuál es el propósito de este código! ;) – BlackBear
Como dice R, aquí es completamente inútil. – GManNickG
es redundante en este caso, como usted mismo ha señalado correctamente. Tal vez fue agregado para evitar alguna advertencia del compilador. –