la cantidad total de incremento y decremento

namespace rojak2.cs
{
    class Program
    {
        static void Main(string[] args)
        {
            ArithmeticOperators();
        }

        static void ArithmeticOperators()
        {
            double totalAmount = 100;
            double result;

            Console.WriteLine("totalAmount is {0}", totalAmount);
            Console.WriteLine();

            result = totalAmount + 100;
            Console.WriteLine("totaAmount is {0}", result);

            result = totalAmount - 50;
            Console.WriteLine("totaAmount is {0}", result);

            result = ++totalAmount;
            Console.WriteLine("totaAmount is {0}", totalAmount);

            result = --totalAmount;
            Console.WriteLine("totaAmount is {0}", totalAmount);
        }
    }

}

mi pregunta es ¿por qué la última salida del resultado es 100 y no 99? debería reducirse de 100 a 101. No lo entiendo del todo.

preguntado el 10 de marzo de 12 a las 14:03

Tener un nombre de espacio de nombres que termina con .cs es realmente extraño, porque los espacios de nombres no tienen que (¡y no deberían!) mapear uno a uno con los archivos. -

3 Respuestas

debido al preincremento. El valor de la variable se incrementa antes de que su valor se copie en el resultado. Entonces, el resultado tendrá 101 como resultado del preincremento y también para el decremento: primero resta uno y luego copia el valor, por lo que obtiene un resultado de 100.

respondido 10 mar '12, 14:03

Debería disminuirse de 100 no 101

¿Por qué? Usted puede les digas que totalAmount es 101 antes de esta declaración, ya que ese es el resultado de la línea anterior.

Veamos cómo cambian las variables a lo largo del código:

double totalAmount = 100;
double result;
result = totalAmount + 100;

// totalAmount = 100; result = 200

result = totalAmount - 50;

// totalAmount = 100; result = 50

result = ++totalAmount;

// totalAmount = 101, result = 101

result = --totalAmount;

// totalAmount = 100, result = 100

Sospecho que es el incremento/decremento del prefijo lo que te confunde.

Esta declaración:

result = ++totalAmount;

Es básicamente equivalente a:

totalAmount = totalAmount + 1;
result = totalAmount;

respondido 10 mar '12, 14:03

La línea

result = ++totalAmount;

Los cambios no solo result, pero totalAmount también; Es por eso que en la última línea, es 101, no 100

respondido 10 mar '12, 14:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.