Определение двойного восклицания?

Я понимаю, что делает двойной восклицательный знак (, или мне кажется, что я понимаю ), но я не уверен, как он определяется на случайном объекте. Например, во фрагменте кода ниже:

Assignment *a;
if (!getAssignment(query, a))
   return false;
hasSolution = !!a;

if (!a)
   return true;

Как узнать, к какому значению приведет двойной восклицательный знак? Другими словами, всегда ли он преобразуется в true? ЛОЖЬ ? или вы можете определить для него поведение, такое как выполнение метода для определения результата (как объект узнает, как действовать в этой ситуации )? Я немного запутался в этом фрагменте кода из-за всех этих восклицательных слов. Любое объяснение приветствуется.

Надеюсь, я был ясен и спасибо.

13
задан Cemre 7 July 2012 в 12:00
поделиться