2010-06-25 2 views
1

ли это действительная проверка нуля на ДВОЙНОМ параметре указателя передается в функциистранных двойной указатель нулевого чек

if (!pdblValue) return E_POINTER; 
+2

Какой тип 'DOUBLE'? – sbi

+0

Да, если его указатель на double, нет, если вы хотите сравнить содержимое указателя, указывающего на ошибки округления. –

ответ

3

В C++ оператор «if» использует булево выражение. Если он равен true, он выполняет часть внутри условного блока. Если это false, это не так.

pdblValue имеет указатель на тип. Отрицание этого (! PdblValue) даст длинное целочисленное выражение, отличное от нуля, если значение указателя было NULL, а в противном случае - ноль.

Это будет преобразовано в булево, потому что это то, что необходимо в состоянии. Значение, отличное от нулевого значения, будет преобразовано в значение true, а нулевое значение - на false.

Таким образом, это будет иметь ту же семантику, чем более естественной форме:

if (pdblValue == NULL) ... 

В которой вы на самом деле, обеспечивающие логическое выражение - тот, что вы на самом деле означает.

1

Да. Указатель оценивает «да», если он отличен от нуля, как и любой другой примитивный тип на C++.

6

Да, это нормальная проверка на то, что указатель не равен нулю.

0

Предполагая, что pdblValue является указателем, и он установлен в значение NULL при инициализации и недействительности, а затем да.

Смежные вопросы