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