2012-03-10 2 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이 아닌 이유는 무엇입니까? 그것은 101에서 100으로 줄여야합니다. 나는 그것을 얻지 못합니다.증가 및 감소의 총 크기

+1

네임 스페이스가 파일과 일대일 매핑을 할 필요가 없기 때문에 네임 스페이스 이름이 .cs로 끝나는 것은 정말 이상합니다. – 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해야합니다 결과 - 처음 하나를 뺀 다음 복사 값, 따라서 당신이 100

1

라인

result = ++totalAmount; 

변경뿐만 아니라 result 같은 결과를 얻을하지만, totalAmount 너무; 그것이 마지막 줄에있는 이유는 101이고 100이 아니기 때문입니다.