Expressions and Assignments

Expressions


설계 고려 사항

연산자


연산자 우선순위Operator Priority

연산자 결합방향

연산자 계산 순서

조건 연산자

값을 구하는 순서

연산자 오버로딩

함수의 부수효과(side effect)


해결 방법

  1. 함수의 부수효과를 발생시킬 수 없도록 한다.
    • 입출력 인수를 허용하지 않는다.
    • 비지역 변수 참조를 허용하지 않는다.
    • 하지만 이 경우 입출력 인수와 비지역 변수 참조가 필요한 경우에 대해 처리할 수 없다.
  2. 모든 연산자의 피연산자 계산순서를 고정시킨다(Java)
    • 장점 : 연산 계산 순서를 정확히 예측할 수 있다.
    • 단점 : 어떤 컴파일러 최적화는 수행될 수 없다.
  3. 경우에 따라 함수의 부수효과를 검사한다.
    • 함수 호출이 어떤 식에 포함될 경우에는, 해당 함수가 부수효과를 일으키지 않는 경우에만 맞는 것으로 간주한다.(FORTRAN 77)
    • 함수가 부수효과를 발생시키지 않는지 검사하는 것 자체가 힘들기 때문에 어렵다.
      int a = 7;
      int zero() {
      	return a - a;
      }
      
      • 이 경우에도 함수가 부수효과를 일으킨다고 판단할 수 있다.
      • False positive가 많아 현실적인 문제가 있다.

형 변환