Definiowanie podwójnego wykrzyknika?
Rozumiem, co robi podwójny wykrzyknik (lub myślę, że rozumiem), ale nie jestem pewien, jak jest zdefiniowany na losowym obiekcie. Na przykład we fragmencie kodu poniżej:
Assignment *a;
if (!getAssignment(query, a))
return false;
hasSolution = !!a;
if (!a)
return true;
Skąd mam wiedzieć, jaka będzie wartość podwójnego wykrzyknika? Innymi słowy, czy zawsze jest konwertowany na true? fałszywe ? lub czy możesz zdefiniować dla niego zachowanie, takie jak wykonanie metody w celu ustalenia wyniku (w jaki sposób obiekt wie, jak działać w tej sytuacji)? Jestem trochę zdezorientowany tym fragmentem kodu ze względu na te wszystkie wykrzykniki, które mają miejsce .. Wszelkie wyjaśnienia są doceniane.
Mam nadzieję, że było jasne i dzięki.