1
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 减少。我不太明白。

4

3 回答 3

2

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

于 2012-03-10T14:21:32.677 回答
1

它应该从 100 而不是 101 减少

为什么?您可以在此语句之前判断totalAmount101,因为这是上一行的输出!

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

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;
于 2012-03-10T14:20:59.120 回答
1

线

result = ++totalAmount;

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

于 2012-03-10T14:24:06.283 回答