2013년 9월 10일 화요일

산술 연산자

From Evernote:

산술 연산자

  • **    
    거듭제곱
  • *       
    곱하기
  • /        
    나누기
  •       
    더하기
  • -        
    빼기

산술 연산자의 우선 순위는 ** > *, / > +, - 순이다. 

물론, 괄호를 사용하면 우선순위를 바꿀 수 있다. 예를 들어,
3 * 2 + 1
은 7이지만,
3 * (2 + 1)
은 9이다.

우선 순위가 같은 경우에는 왼쪽의 연산자가 먼저 계산된다. 예를 들어,
a * b / c
의 경우에 a * b가 먼저 계산된 후의 결과값을 c로 나눈다.

하지만, 거듭제곱의 경우에는 오른쪽의 연산자가 먼저 계산된다. 예를 들어,
2 ** 2 ** 3
은 2 ** 8 이지, 4 ** 3이 아니다.


 
산술식
정수의 나눗셈(나누는 수와 나누어지는 수가 모두 정수인 경우)인 경우 그 결과는 항상 0에 가까운 정수값이 된다.

정수의 나눗셈 결과를 실수형으로 받으려면 real 함수를 사용해야 하는데, 이 함수는 매개변수로 받은 값을 실수형으로 변환한다. real(2)는 2.0이라는 실수형 값이 된다.

val = real(2) / 3 ! = 1.5
val = 2 / real(3) ! = 1.5
val = real(2/3) ! = 0 (이 경우, 2/3이 먼저 계산되므로 최종 결과는 0이 된다.)


서로 다른 자료형의 값을 산술 연산하는 경우에, 먼저 약한 자료형이 강한 자료형으로 변환된 후에 연산이 수행되며, 결과 값은 강한 자료형이 된다. 자료형이 강한 순서는 복소수형 > 실수형 > 정수형의 순서이다.
따라서, real(2) / 3의 경우에 3이 먼저 실수형으로 변환된 후에 나눗셈 연산이 수행된다.