Nidificação if em C ++

Em C ++, as chaves de um E se ou um outro cláusula pode conter outra E se declaração. Estes são conhecidos como aninhadoE se declarações. Os seguintes NestedIf programa mostra um exemplo de um aninhada E se declaração em uso.

// NestedIf - demonstrar uma instrução IF aninhada // # include #incluir #incluir usando namespace std-int main (int nNumberofArgs, char * pszArgs []) {// digite seu nascimento yearint Nyear-cout lt; lt; "Digite seu ano de nascimento:" CIN II-III >> Nyear - // Fazer a determinação de centuryif (Nyear> 2000) {cout lt; lt; "Você nasceu no século 21" lt; lt; endl-} else {cout lt; lt; "Você nasceu na" -se (Nyear lt; 1950) {cout lt; lt; "A primeira metade" -} else {cout lt; lt; "A segunda metade" -} cout lt; lt; "Do século 20" lt; lt; endl -} // espera até que o usuário está pronto antes de terminar o programa // para permitir que o usuário veja o resultscout programa lt; lt; "Pressione Enter para continuar ..." lt; lt; endl-cin.ignore (10, ' n') - cin.get () - retornar 0-}

Este programa começa por pedir ano de nascimento do usuário. Se o ano do nascimento é posterior a 2000, o programa emite a string "Você nasceu no século 21.".

Em termos matematicamente precisos, o ano de 2000 pertence ao século 20, e não 21.

Se o ano de nascimento não é maior do que 2,000, então o programa entra no outro cláusula do exterior E se declaração. Esta cláusula começa emitindo a string "Você nasceu na" antes de comparar o ano de nascimento e 1950.

Se o ano de nascimento é menos do que 1,950, então o programa adiciona o primeiro "a primeira metade". Se o ano de nascimento é não menos do que 1,950, então o outro cláusula do interior E se declaração é executada, que tachas na frase "A segunda parte". Finalmente, o programa adiciona a frase final "Do século 20." para o que tem sido a saída até agora.

Na prática, a saída do programa aparece como segue, para três valores possíveis para o ano de nascimento. Em primeiro lugar, 2002 produz a seguinte:

Digite seu ano de nascimento: 2002Você nasceu na centuryPress 21 Enter para continuar. . .

Por exemplo, 1956 gera a seguinte:

Digite seu ano de nascimento: 1956You nasceram na segunda metade do 20º centuryPress Enter para continuar. . .

Finalmente, o ano do nascimento de 1932 gera a terceira possibilidade:

Digite seu ano de nascimento: 1932You nasceram na primeira metade do 20º centuryPress Enter para continuar. . .

Você pode usar uma nested E se para evitar as comparações desnecessárias no NestedBranchDemo programa:

Se (nOperand1> nOperand2) {cout lt; lt; "Argumento 1 é maior do que o argumento 2" lt; lt; endl-} else {if (nOperand1 lt; nOperand2) {cout lt; lt; "Argumento 1 é menos de argumento 2" lt; lt; endl-} else {cout lt; lt; "Argumento 1 é igual ao argumento 2" lt; lt; }} endl-

Esta versão executa a primeira comparação da mesma maneira que antes. E se nOperand1 é melhor que nOperand2, esse trecho emite a string "Argumento 1 é maior do que o argumento 2". A partir daqui, no entanto, o controlo salta para a cinta fechada final, ignorando assim as demais comparações.

E se nOperand1 não é maior do que nOperand2, em seguida, o fragmento executa um segundo teste para diferenciar o caso de que nOperand1 é menos do que nOperand2 a partir do caso de que eles são iguais em valor.

A figura mostra graficamente o fluxo de controlo para a NestedBranchDemo programa para a entrada de 5 e 10.

image0.jpg

Realizar o teste para a igualdade é desnecessária: Se nOperand1 não é maior do que nem menos do que nOperand2, em seguida, ele deve ser igual.

menu