Maison >développement back-end >C++ >Quelle syntaxe de boucle sans fin en C/C est la meilleure : for(;;), while(1) ou while(true) ?

Quelle syntaxe de boucle sans fin en C/C est la meilleure : for(;;), while(1) ou while(true) ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-15 00:39:02312parcourir

Which Endless Loop Syntax in C/C   is Best: for(;;), while(1), or while(true)?

Boucle sans fin en C/C

Question :

Différentes méthodes existent pour créer un boucle sans fin en C/C , y compris for(;;), while(1) et do {} while(1). Existe-t-il une forme préférée et les compilateurs modernes optimisent-ils l'une par rapport aux autres ?

Réponse :

Alors que les préférences personnelles alimentent de nombreuses discussions sur ce sujet, l'analyse objective révèle la suivant :

pour(;;)

  • Canonique forme, cité dans l'ouvrage faisant autorité "The C Programming Language" de Kernighan et Ritchie.
  • Obscur en raison du traitement unique par la norme C des éléments omis dans la syntaxe de la boucle for.

while(1)

  • Plus lisible que for(;;), mais repose sur Interprétation par C des expressions non nulles comme vraies.
  • Peut déclencher des avertissements du compilateur ("la condition est toujours vraie").

while(true)

  • Destiné à améliorer la lisibilité sur while(1).
  • Déclenche toujours le même compilateur avertissements.
  • Nécessite l'utilisation de l'en-tête stdbool.h et du type bool, qui peuvent ne pas être pris en charge sur toutes les plates-formes.

Optimisation du compilateur moderne

Les compilateurs modernes reconnaissent toutes ces formes de boucles comme des boucles infinies et effectuent des optimisations équivalentes. Ils peuvent émettre des avertissements en fonction des paramètres du compilateur, mais le code optimisé généré est le même.

Conclusion

En fin de compte, le choix de la syntaxe de boucle sans fin est une question personnelle préférence. Cependant, étant donné la large reconnaissance de for(;;), son évitement des avertissements du compilateur et la redondance des efforts de lisibilité supplémentaires pour ceux qui sont familiers avec C/C , cela reste un choix raisonnable.

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!

Déclaration:
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