Powiel możliwe:
Double Negation in C++ code.Jaki jest cel podwójnego negatywu w definicji makra, jak (!! (wyraż))?
Czytam kodu bazowego, a tu coś takiego:
#define uassert(msgid, msg, expr) (void)((!!(expr))||(uasserted(msgid, msg), 0))
Nie mogę zrozumieć, dlaczego (!! (wyra)) jest stosowany zamiast pojedynczego (wyra). W każdym razie podwójny negatyw oznacza pozytywny, prawda? Czy czegoś brakuje?
Nie mogę nawet ustalić, jaki jest cel tego kodu! ;) – BlackBear
Tak jak mówi R, jest to całkowicie bezużyteczne. – GManNickG
jest zbędny w tym przypadku, jak sam prawidłowo wskazałeś. Może został właśnie dodany, aby uniknąć ostrzeżenia kompilatora. –