Problème critique
Le compilateur C2H évalue toujours les deuxnds de logique
(, &&
||
) et conditionnel ?:
()
Opérateurs. Cela est différent des normes nationales américaines prévues
Comportement de l’Institut (ANSI) C, où les synds sont évalués de gauche à droite,
et les esthlés inutiles sont dentelés.
Par exemple, dans l’expression (i-- && j--)
,
si la valeur i
est nulle, l’ANSI C n’évalue pas
l’expression de droite (RHS), et j
n’est pas
décrémenté. À l’inverse, le compilateur C2H évalue les deux faces,
decrémentation j
.
Les expressions suivantes sont d’autres exemples qui peuvent être affecté par ce problème :
if (i-- || j )
...;
a = ((cond == 1)? i : j );
Utilisez des opérations logiques et conditionnels dont les opérateurs ont
pas d’effets secondaires. Les opérations avec effets secondaires comprennent les opérations pré et post-
opérations d’incrément et de décrément
(, --
),
opérations de mémoire *
[]
(, ->
,,),
et les appels fonctionnels.