Nidification si les déclarations en C ++

En C ++, les accolades d'une si ou un autre clause peut contenir un autre si déclaration. Ceux-ci sont connus en tant que nichée si déclarations. Ce qui suit NestedIf programme montre un exemple d'un imbriquée si déclaration dans l'utilisation.

// NestedIf - Démontrer une instruction if imbriquée // # comprennent #comprendre #comprendre using namespace main (int nNumberofArgs, char * pszArgs []) {// entrez votre naissance yearint Nyear-cout de std-int lt; lt; "Entrez votre année de naissance:" -cin >> Nyear - // Faire la détermination de centuryif (Nyear> 2000) {cout lt; lt; "Vous êtes né au 21e siècle" lt; lt; endl-} else {cout lt; lt; "Tu es né dans« -Si (Nyear lt; 1950) {cout lt; lt; "la première moitié" -} else {cout lt; lt; "la seconde moitié" -} cout lt; lt; LT "du 20e siècle"; lt; endl -} // attend que l'utilisateur est prêt avant de terminer le programme // pour permettre à l'utilisateur de voir le resultscout de programme lt; lt; "Appuyez sur Entrée pour continuer ..." lt; lt; endl-cin.ignore (10, ' n') - cin.get () - retourner 0-}

Ce programme commence par demander pour l'année de naissance de l'utilisateur. Si l'année de naissance est postérieure à 2000, puis le programme émet la chaîne "Vous êtes né au 21e siècle".

En termes mathématiquement exacts, l'année 2000 appartient au 20e siècle, pas le 21.

Si l'année de naissance est pas supérieure à 2000, le programme entre dans le autre la clause de l'extérieur si déclaration. Cette clause commence par émettre la chaîne "Tu es né dans" avant de comparer l'année de naissance à 1950.

Si l'année de naissance est inférieure à 1950, puis le programme ajoute le premier "la première moitié". Si l'année de naissance ne sont pas moins de 1950, puis la autre la clause de l'intérieur si instruction est exécutée, qui vire sur la phrase "la seconde moitié". Enfin, le programme ajoute la phrase de conclusion "du 20e siècle" à tout ce qui a été sortie à ce jour.




Dans la pratique, la sortie du programme se présente comme suit pour les trois valeurs possibles pour l'année de naissance. Première 2002 produit ce qui suit:

Entrez votre année de naissance: 2,002Vous êtes né au 21e centuryPress Entrée pour continuer. . .

Par exemple, 1 956 génère ce qui suit:

Entrez votre année de naissance: 1956You sont nés dans la seconde moitié du 20e centuryPress Entrée pour continuer. . .

Enfin, l'année de naissance de 1932 génère la troisième possibilité:

Entrez votre année de naissance: 1932You sont nés dans la première moitié du 20e centuryPress Entrée pour continuer. . .

Vous pouvez utiliser un imbriquée si d'éviter les comparaisons inutiles dans le NestedBranchDemo programme:

si (nOperand1> nOperand2) {cout lt; lt; "Argument 1 est plus grand que l'argument 2" lt; lt; endl-} else {if (nOperand1 lt; nOperand2) {cout lt; lt; "Argument 1 est inférieur à l'argument 2" lt; lt; endl-} else {cout lt; lt; "Argument 1 est égal à l'argument 2" lt; lt; endl-}}

Cette version effectue la première comparaison comme avant. Si nOperand1 est supérieur à nOperand2, ce bout émet la chaîne "Argument 1 est plus grand que l'argument 2". De là, cependant, le contrôle passe à l'accolade finale fermée, en sautant ainsi les comparaisons restantes.

Si nOperand1 est inférieure ou égale à nOperand2, puis l'extrait effectue un second test à différencier le cas où nOperand1 est inférieur à nOperand2 du boîtier qu'elles sont égales en valeur.

La figure montre graphiquement le flux de contrôle pour le NestedBranchDemo programme pour l'entrée de 5 et 10.

image0.jpg

Réalisation du test pour l'égalité est inutile: Si nOperand1 est ni supérieur ni moins que nOperand2, alors il doit être égal.


» » » » Nidification si les déclarations en C ++