ID de l'article: 000073768 Type de contenu: Dépannage Dernière révision: 14/09/2011

Résultats incorrects d’un fonctionnement logique ou conditionnel avec des effets secondaires

Environnement

  • Édition d'abonnement Intel® Quartus® II
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT

    Problème critique

    Descriptif

    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 );
    Résolution

    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.

    Produits associés

    Cet article concerne 1 produits

    Circuits programmables Intel®

    Le contenu de cette page est une combinaison de traduction humaine et informatique du contenu original en anglais. Ce contenu vous est fourni pour votre commodité et à titre informatif seulement et ne saurait être totalement exact ou complet. En cas de contradiction entre la version anglaise de cette page et la traduction, c'est la version anglaise qui prévaut. Afficher la version anglaise de cette page.