Cómo utilizar la función de autoincrement / autodecremento en C ++
Programadores de C ++ muy a menudo utilizan el autoincrement ++ o el autodecremento - - operadores con los lazos que cuentan algo. Observe desde el siguiente fragmento extraído de la WhileDemo ejemplo que el programa disminuye el recuento de bucle mediante el uso de sentencias de asignación y restas, así:
// Ahora bucle que muchos timeswhile (nLoopCount> 0) {nLoopCount = nLoopCount - 1-cout lt; lt; "Sólo" lt; lt; nLoopCountlt; lt; "Bucles para ir" lt; lt; endl-}
Una versión más compacta utiliza el autodecremento característica, que hace lo que usted puede imaginar:
while (nLoopCount> 0) {cout nLoopCount --- lt; lt; "Sólo" lt; lt; nLoopCountlt; lt; "Bucles para ir" lt; lt; endl-}
La lógica en esta versión es el mismo que en el original. La única diferencia es la forma en que nLoopCount se decrementa.
Debido a que el autodecremento tanto disminuye su argumento y devuelve su valor, la operación de reducción se puede combinar con el mientras lazo. En particular, la siguiente versión es el bucle más pequeño todavía:
while (nLoopCount--> 0) {cout lt; lt; "Sólo" lt; lt; nLoopCountlt; lt; "Bucles para ir" lt; lt; endl-}
Lo creas o no, nLoopcount--> 0 es la versión de que la mayoría de los programadores de C ++ usarían. No es que los programadores de C ++ como ser lindo (aunque lo hacen). De hecho, la versión más compacta (que incorpora la característica autoincrement o autodecremento en la comparación lógica) es más fácil de leer, sobre todo a medida que adquiera experiencia.
Ambas cosas nLoopCount-- y --nLoopCount expresiones decremento nLoopCount. La expresión anterior, sin embargo, devuelve el valor de nLoopCount antes de ser decremented- esta última expresión, lo hace después de haber disminuido.
¿Con qué frecuencia debe la versión autodecremento de WhileDemo ejecutar cuando el usuario entra en un bucle de conteo de 1? Si utiliza la versión pre-decremento, el valor de --nLoopCount es 0, y el cuerpo del bucle no se introduce. Con la versión post-decremento, el valor de nLoopCount es 1, y el control entra en el bucle.
Cuidado con pensar que la versión del programa con el comando autodecremento ejecuta más rápido que el simple " - 1 " versión (ya que contiene un menor número de declaraciones). Probablemente realiza exactamente de la misma. Compiladores modernos son buenos en conseguir el número de instrucciones de lenguaje de máquina a un mínimo, no importa cuál de las instrucciones decremento se muestran aquí que realmente utiliza.