10.3 정수 리터럴 접미사 사용하기
리터럴의 크기를 명확하게 표현하기 위해 접미사(suffix)를 사용할 수도 있습니다. 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요.
integer_literal_suffix.c
#include <stdio.h> int main() { printf("%ld\n", -10L); // long 크기의 정수 리터럴 printf("%lld\n", -1234567890123456789LL); // long long 크기의 정수 리터럴 printf("%u\n", 10U); // unsigned int 크기의 정수 리터럴 printf("%lu\n", 1234567890UL); // unsigned long 크기의 정수 리터럴 printf("%lu\n", 10UL); // unsigned long 크기의 정수 리터럴 printf("%llu\n", 1234567890123456789ULL); // unsigned long long 크기의 정수 리터럴 return 0; }
실행 결과
-10 -1234567890123456789 10 1234567890 10 1234567890123456789
변수를 선언할 때는 long, long long, unsigned long처럼 정수 자료형으로 크기를 정할 수 있지만 리터럴은 접미사를 활용하여 크기를 명시적으로 표기합니다.
접미사 | 자료형 |
---|---|
생략 | int |
l, L | long |
u, U | unsigned int |
ul, UL | unsigned long |
ll, LL | long long |
ull, ULL | unsigned long long |
접미사는 대문자, 소문자를 모두 사용할 수 있으며 l과 u를 조합하여 크기와 부호 유무를 표현합니다(대소문자를 섞어 쓸 수 있습니다). 접미사를 생략하면 int 크기가 됩니다.
10진수뿐만 아니라 8진수와 16진수에도 접미사를 사용할 수 있습니다.
integer_literal_oct_hex_suffix.c
#include <stdio.h> int main() { printf("0%lo\n", 017L); // long 크기의 8진 정수 리터럴 printf("0%lo\n", 017UL); // unsigned long 크기의 8진 정수 리터럴 printf("0x%lX\n", 0x7FFFFFL); // long 크기의 16진 정수 리터럴 printf("0x%lX\n", 0xFFFFFFFFUL); // unsigned long 크기의 16진 정수 리터럴 return 0; }
실행 결과
017 017 0x7FFFFF 0xFFFFFFFF
접미사를 붙이는 방법은 10진수와 같습니다.