Определение двойного восклицания?
Я понимаю, что делает двойной восклицательный знак (или я думаю, что понимаю), но я не уверен, как он определен для случайного объекта. Например, во фрагменте кода ниже:
Assignment *a;
if (!getAssignment(query, a))
return false;
hasSolution = !!a;
if (!a)
return true;
Как мне узнать, к какому значению приведет двойной восклицательный знак? Другими словами, всегда ли это превращается в истину? ложный ? или вы можете определить поведение для него, например, выполнить метод для определения результата (как объект знает, как действовать в этой ситуации)? Я немного озадачен этим фрагментом кода из-за всего этого восклицательного материала. Любое объяснение приветствуется.
Надеюсь, я был ясен и спасибо.