递增和递减的总金额

本文关键字:金额 | 更新日期: 2023-09-27 18:27:24

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);
        }
    }
}

我的问题是为什么结果的最后一个输出是 100 而不是 99?它应该从 100 而不是 101 减少。我不太明白。

递增和递减的总金额

因为预递增。 变量值在其值复制到结果之前递增。因此,结果将有 101 作为预递增和递减的结果 - 它首先减去一个,然后复制值,因此你得到的结果为 100。

它应该从 100 而不是 101 减少

为什么?你可以知道totalAmount在这个语句之前是 101,因为这是前一行的输出!

让我们看看变量在代码过程中是如何变化的:

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

我怀疑是前缀递增/递减让您感到困惑。

此声明:

result = ++totalAmount;

基本上相当于:

totalAmount = totalAmount + 1;
result = totalAmount;

result = ++totalAmount;

变化不仅result,而且totalAmount;这就是为什么在最后一行,它是 101,而不是 100