Nidificação se declarações em c ++
Em C ++, as cintas de uma E se ou um outro cláusula pode conter outra E se declaração. Estes são conhecidos como aninhados E se afirmaçõ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 using namespace std-int main (int nNumberofArgs, char * pszArgs []) {// digite seu nascimento yearint Nyear-cout lt; lt; "Digite seu ano de nascimento: "CIN II-III gt; gt; Nyear - // Fazer a determinação de centuryif (Nyear gt; 2000) {cout lt; lt; "Você nasceu no século 21"lt; lt; endl-} else {cout lt; lt; "Você nasceu em "-se (Nyear lt; 1950) {cout lt; lt; "a primeira metade"-} else {cout lt; lt; "A segunda parte"-} 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 () - 0-} retornar
Este programa começa por pedir ano de nascimento do usuário. Se o ano do nascimento é posterior a 2000, o programa gera a string “Você nasceu no século 21”.
Em termos matematicamente precisos, o ano de 2000 pertence ao século 20, não 21.
Se o ano de nascimento não é maior do que 2000, então o programa entra no outro cláusula do exterior E se declaração. Esta cláusula começa por produzir a corda “Você nasceu na” antes de comparar o ano de nascimento a 1950.
Se o ano do nascimento é inferior a 1950, em seguida, o programa adiciona o primeiro "a primeira metade". Se o ano de nascimento não é menor que 1950, então o outro cláusula do interior E se declaração é executada, que tachas na frase "A segunda parte". Finalmente, o programa acrescenta a frase conclusiva “Do século 20” para o que tem sido a saída até agora.
Na prática, a saída do programa aparece da seguinte forma por três valores possíveis para o ano de nascimento. Primeira de 2002 produz o 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 de 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:
if (nOperand1 gt; nOperand2) {cout lt; lt; "Argumento 1 é maior do que 2 argumento"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 apenas como antes. E se nOperand1 é melhor que nOperand2, esse trecho gera a string “Argumento 1 é maior do que argumento 2”. A partir daqui, no entanto, o controlo salta para a cinta fechada final, saltando, assim, as comparações restantes.
E se nOperand1 não é maior 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.
Realizar o teste de igualdade é desnecessária: se nOperand1 não é nem maior que nem menos do que nOperand2, em seguida, ele deve ser igual.