2012-03-10 80 views
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减少。我不太明白。总增量和减量

+1

以'.cs'结尾的命名空间名称真的很奇怪,因为命名空间不需要(也不应该!)与文件一对一映射。 – svick 2012-03-10 14:26:44

回答

1

应该从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; 
2
因为前增量的

。在将值复制到结果之前,变量值会增加。所以导致将有101前增量的结果,也为递减 - 它首先减去一个,然后拷贝值,因此你得到结果为100

1

线

result = ++totalAmount; 

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