2010-06-25 6 views
1

Est-ce un chèque null valide sur un paramètre de pointeur DOUBLE passé dans une fonctionétrange à double pointeur de contrôle nul

if (!pdblValue) return E_POINTER; 
+2

Quel type est un 'DOUBLE'? – sbi

+0

oui si c'est le pointeur sur un double, non si vous voulez comparer le contenu de ce que le pointeur pointe vers des erreurs d'arrondi. –

Répondre

3

En C++, l'instruction "if" utilise une expression booléenne. S'il est vrai, il exécute la partie à l'intérieur du bloc conditionnel. Si c'est faux, ce n'est pas le cas.

pdblValue est de type pointeur. Négatif (! PdblValue) donnera une longue expression entière qui est différente de zéro si la valeur du pointeur était NULL, et zéro sinon.

Ceci sera converti en un booléen parce que c'est ce qui est nécessaire dans la condition. La valeur différente de zéro sera convertie en true et la valeur zéro en false.

Par conséquent, cela aura la même sémantique que la forme la plus naturelle:

if (pdblValue == NULL) ... 

dans lequel vous donne en fait une expression booléenne - celui qui vous fait qui signifie.

1

Oui. Pointer évalue à "oui" s'il est différent de zéro, comme tous les autres types de primitives en C++.

6

Oui, il s'agit d'une vérification normale pour un pointeur non nul.

0

En supposant que pdblValue est un pointeur, il est défini sur NULL lorsqu'il est initialisé et invalide alors oui.