Maison > développement back-end > C++ > le corps du texte

L'évaluation des courts-circuits est-elle garantie en C pour les types définis par l'utilisateur ?

Barbara Streisand
Libérer: 2024-11-10 17:40:04
original
833 Les gens l'ont consulté

Is Short-Circuit Evaluation Guaranteed in C   for User-Defined Types?

Évaluation de court-circuit en C : une mise en garde

En Java, l'évaluation de court-circuit garantit que le bon opérande d'un opérateur logique est exécuté uniquement si l'opérande de gauche est évalué à vrai. Ce comportement permet une exécution efficace du code en évitant les calculs inutiles.

Maintenant, considérons un scénario similaire en C :

if (a != 0 && a->fun());
Copier après la connexion

Bien que ce code émule le comportement souhaité en Java, il est important de noter que l'évaluation des courts-circuits pour les types définis par l'utilisateur n'est pas garantie en C . Cela signifie que l'appel a->fun() pourrait être exécuté même si a est nul, conduisant à un comportement indéfini.

La raison derrière cet écart réside dans la nature surchargée des opérateurs logiques && et || en C. Lorsqu'ils sont appliqués à des types définis par l'utilisateur, ces opérateurs peuvent être personnalisés par le programmeur, remplaçant potentiellement le comportement par défaut de l'évaluation des courts-circuits.

Par conséquent, pour garantir la portabilité et éviter des résultats imprévisibles, il est fortement conseillé de s'abstenir de surcharger le && et || opérateurs pour les types personnalisés. Cependant, pour les types intégrés comme int et bool, l'évaluation de court-circuit est garantie, vous permettant d'utiliser cette puissante technique d'optimisation en C comme vous le feriez en Java.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal