C/C++에서 수정자(Modifier)는 기본 자료형(base type)의 의미를 변경하여, 프로그램이 요구사항에 맞게 동작하도록 만들어 주는 역할을 합니다.
대표적인 예로 '시간' 값을 들 수 있습니다. 시간은 음수가 될 수 없는 값이므로, 음수를 표현할 수 없는 unsigned 타입으로 선언하는 것이 논리적으로 합리적입니다. 이처럼 수정자를 활용하면 변수가 가질 수 있는 값의 범위를 상황에 맞게 조정할 수 있습니다.
C++에서 사용할 수 있는 데이터 타입 수정자
C++에서는 char, int, double 자료형 앞에 다음과 같은 수정자를 붙여 사용할 수 있습니다.
- signed — 음수와 양수를 모두 표현
- unsigned — 양수(및 0)만 표현
- long — 더 넓은 값의 범위 확보
- short — 더 좁은 값의 범위로 메모리 절약
수정자의 적용 범위
signed, unsigned, long, short는 모두 정수 계열 기본 타입에 적용할 수 있습니다. 여기에 더해 다음과 같은 규칙도 있습니다.
signed와unsigned는char에도 적용할 수 있습니다.long은double에도 적용할 수 있습니다(long double).
또한 signed와 unsigned는 long 또는 short 수정자와 조합하여 접두사 형태로 함께 사용할 수 있습니다. 예를 들어 unsigned long int처럼 작성할 수 있습니다.
축약 표기법 (Shorthand Notation)
C++은 unsigned, short, long 정수를 선언할 때 간편한 축약 표기법을 제공합니다. int 키워드를 생략하고 단어만 사용해도 되며, 이 경우 int가 자동으로 포함된 것으로 간주됩니다.
unsigned long a; // int 생략
unsigned long int a; // 위 선언과 완전히 동일
즉, 두 선언은 컴파일러 입장에서 같은 의미를 가지므로, 코드의 가독성에 따라 편한 방식을 선택해 사용하면 됩니다.