Maison  >  Article  >  développement back-end  >  Comment sortir d'une boucle à partir d'une instruction Switch en C ?

Comment sortir d'une boucle à partir d'une instruction Switch en C ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-28 12:13:31135parcourir

How to Break Out of a Loop from Within a Switch Statement in C  ?

Sortir des boucles à partir d'une instruction Switch

Lors de la navigation dans le code, des situations peuvent survenir dans lesquelles vous devez quitter une boucle de l'intérieur une instruction switch. Considérons le scénario suivant :

<code class="cpp">while(true) {
    switch(msg->state) {
    case MSGTYPE: // ... 
        break;
    // ... more stuff ...
    case DONE:
        **HERE, break out of the loop itself**
    }
}</code>

L'objectif est de trouver un moyen élégant de sortir de la boucle englobante sans recourir à des drapeaux ou à des ruptures conditionnelles.

Une sortie rapide : Utilisation de 'goto'

Dans le domaine de C , l'instruction 'goto' fournit une solution simple. Il vous permet d'accéder à une étiquette spécifique dans la fonction actuelle. En tirant parti de « goto », vous pouvez quitter proprement la boucle à partir de l'instruction switch :

<code class="cpp">while ( ... ) {
   switch( ... ) {
     case ...:
         goto exit_loop;

   }
}
exit_loop: ;</code>

Cette approche offre une manière concise et explicite de terminer la boucle. Gardez à l’esprit que « goto » doit être utilisé avec parcimonie pour maintenir la lisibilité du code. Cependant, dans certaines situations, cela peut apporter une solution simple et efficace.

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