Como usar o recurso Autoincrement / Autodecrement em C ++
programadores C ++, muitas vezes, usar o autoincrement ++ ou o autodecrement - - operadores com loops que contam alguma coisa. Observe a partir do seguinte trecho extraído do WhileDemo exemplo, que o programa diminui a contagem de loop usando atribuição e subtração declarações, como este:
// Agora loop que muitos timeswhile (nLoopCount> 0) {nLoopCount = nLoopCount - 1-cout lt; lt; "Somente " lt; lt; nLoopCountlt; lt; "Loops para ir" lt; lt; endl-}
Uma versão mais compacta utiliza o autodecrement característica, que faz o que você pode imaginar:
while (nLoopCount> 0) {nLoopCount --- cout lt; lt; "Somente " lt; lt; nLoopCountlt; lt; "Loops para ir" lt; lt; endl-}
A lógica desta versão é a mesma como no original. A única diferença é a forma como o nLoopCount é decrementado.
Porque o autodecrement ambos diminui o seu argumento e retorna o seu valor, a operação de diminuição pode ser combinado com o enquanto loop. Em particular, a seguinte versão é ainda o menor loop:
while (nLoopCount--> 0) {cout lt; lt; "Somente " lt; lt; nLoopCountlt; lt; "Loops para ir" lt; lt; endl-}
Acredite ou não, nLoopcount--> 0 é a versão que a maioria dos programadores C ++ usaria. Não é que os programadores C ++ como ser bonito (embora eles fazem). Na verdade, a versão mais compacta (que incorpora o recurso autoincrement ou autodecrement na comparação lógica) é mais fácil de ler, especialmente à medida que ganhar experiência.
Ambos nLoopCount-- e --nLoopCount expressões decrement nLoopCount. A expressão anterior, no entanto, devolve o valor de nLoopCount antes de ser decremented- esta última expressão faz isso após diminuído.
Quantas vezes deve a versão autodecrement de WhileDemo executar quando o usuário insere uma contagem de loop de 1? Se você usar a versão de pré-redução, o valor de --nLoopCount é 0, e o corpo do loop nunca é inserido. Com a versão pós-decremento, o valor de nLoopCount é 1, e o controlo entra no lacete.
Cuidado pensando que a versão do programa com o comando autodecrement executa mais rapidamente do que a simples # 147-- 1 # 148- versão (uma vez que contém menos declarações). Provavelmente executa exactamente o mesmo. compiladores modernos são bons em conseguir o número de instruções em linguagem de máquina a um mínimo, não importa qual das instruções decréscimo mostrados aqui você realmente usa.