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

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

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

if (!a)
   return true;

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

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

Ответы на вопрос(7)

Ваш ответ на вопрос