단항 연산자

단항 연산자

Fortran에서 X = Y * -Z처럼 곱셈 바로 뒤에 부호가 붙은 값이 오는 코드를 본 적이 있나요? 표준 문법으로는 좀 어색해 보이지만, GNU Fortran은 이걸 허용하는 확장을 제공해요. 어떤 규칙으로 동작하는지 함께 살펴볼게요.

출처: Unary operators

본문

확장 기능으로서 GNU Fortran은 단항 플러스(+)와 단항 마이너스(-) 연산자가 이항 산술 연산자의 두 번째 피연산자 자리에, 괄호 없이 나타나는 것을 허용해요.

 X = Y * -Z

위 코드에서 -Z가 괄호 없이 곱셈의 오른쪽 피연산자로 쓰였죠. 표준 Fortran 문법으로는 이런 표현이 허용되지 않지만, GNU Fortran의 확장 덕분에 그대로 컴파일할 수 있어요. -Z가 단항 마이너스로 묶여서 하나의 피연산자로 다뤄지는 거예요.

이 규칙이 허용하는 범위를 좀 더 살펴볼게요. "이항 산술 연산자의 두 번째 피연산자 자리"라는 조건이 핵심이에요. 즉 오른쪽에 오는 피연산자에만 부호가 붙을 수 있고, 첫 번째 피연산자(왼쪽)에는 적용되지 않아요. 예를 들어 X = -Y * Z 같은 표현이 표준 문법에서 이미 허용되는 것과는 별개로, X = Y * -Z 형식을 특히 편의상 허용해 주는 확장이에요.

이 확장은 주로 옛 코드나 다른 컴파일러로 작성된 소스와의 호환성을 고려해 지원되는 편의 기능이에요. 굳이 피해야 할 필요는 없지만, 명확성을 위해 괄호를 붙여 쓰는 습관도 나쁘지 않아요. 특히 코드리뷰나 팀 협업에서는 -Z가 곱셈의 일부인지 별도 항인지 헷갈리지 않게 괄호로 묶어 주는 것이 읽는 사람에게 더 친절할 수 있어요.

더 알아보기

  • 단항 연산자 확장은 GNU Fortran의 "Extensions implemented in GNU Fortran" 절의 하나로 정리되어 있어요.
  • 비슷한 편의 확장으로 FORMAT 문법이나 COMMON 관련 항목들이 같은 절 아래에 있어요.
  • 이 확장에 의존하는 코드라면 컴파일러를 바꿀 때 호환성을 미리 점검해 두는 것이 좋아요.