2012-03-10 14 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ではないのですか?それは100から101に減少する必要があります。私はそれを取得しないでください。増分と増分の合計数

+1

'.cs 'で終わる名前空間の名前が本当に奇妙なのは、名前空間がファイルと1対1で対応する必要がないからです。 – svick

答えて

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 

私はそれはあなたを混乱だ置インクリメント/デクリメントだ疑い。

この文:理由は、前置インクリメントの

totalAmount = totalAmount + 1; 
result = totalAmount; 
2

result = ++totalAmount; 

は基本的に同等です。変数値は、その値が結果にコピーされる前にインクリメントされます。だから、前置インクリメントの結果として、さらに減少するために101を持っています結果 - それは最初の1を減算して、コピー値は、したがって、あなたが100

1

ライン

result = ++totalAmount; 

の変更だけでなく、resultとなりますが、 totalAmount;だから最後の行では、それは101ではなく、100ではない