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