7.1 정수형 변수 선언하기
본격적으로 정수 자료형을 사용해보겠습니다. 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요.
integer.c
#include <stdio.h> int main() { char num1 = -10; // 1바이트 부호 있는 정수형으로 변수를 선언하고 값 할당 short num2 = 30000; // 2바이트 부호 있는 정수형으로 변수를 선언하고 값 할당 int num3 = -1234567890; // 4바이트 부호 있는 정수형으로 변수를 선언하고 값 할당 long num4 = 1234567890; // 4바이트 부호 있는 정수형으로 변수를 선언하고 값 할당 long long num5 = -1234567890123456789; // 8바이트 부호 있는 정수형으로 변수를 // 선언하고 값 할당 // char, short, int는 %d로 출력하고 long은 %ld, long long은 %lld로 출력 printf("%d %d %d %ld %lld\n", num1, num2, num3, num4, num5); // -10 30000 -1234567890 1234567890 -1234567890123456789 return 0; }
실행 결과
-10 30000 -1234567890 1234567890 -1234567890123456789
부호 있는 정수 자료형으로 변수를 만든 뒤 값을 할당해보았습니다. 보통 부호 있는 정수는 signed를 생략합니다. 또한, short와 long도 int를 생략하여 사용합니다. 여기서 char는 문자(character)를 뜻하지만 기본적으로 정수형입니다.
printf 함수에서 char, short, int는 서식지정자 %d로 출력하지만 long은 %ld를 사용하고 long long은 %lld를 사용합니다.
참고
- %d: 10진수(decimal)의 약어로 d를 사용합니다.
- %ld: long decimal의 첫 글자를 따서 ld를 사용합니다.
- %lld: long long decimal의 첫 글자를 따서 lld를 사용합니다.
이번에는 부호 없는 정수 자료형을 사용해보겠습니다.
unsigned_integer.c
#include <stdio.h> int main() { unsigned char num1 = 200; // 1바이트 부호 없는 정수형으로 // 변수를 선언하고 값 할당 unsigned short num2 = 60000; // 2바이트 부호 없는 정수형으로 // 변수를 선언하고 값 할당 unsigned int num3 = 4123456789; // 4바이트 부호 없는 정수형으로 // 변수를 선언하고 값 할당 unsigned long num4 = 4123456789; // 4바이트 부호 없는 정수형으로 // 변수를 선언하고 값 할당 unsigned long long num5 = 12345678901234567890; // 8바이트 부호 없는 정수형으로 // 변수를 선언하고 값 할당 // unsigned char, unsigned short, unsigned int는 %u로 출력하고 // unsigned long은 %lu, unsigned long long은 %llu로 출력 printf("%u %u %u %lu %llu\n", num1, num2, num3, num4, num5); // 200 60000 4123456789 4123456789 12345678901234567890 return 0; }
실행 결과
200 60000 4123456789 4123456789 12345678901234567890
부호 없는 정수 자료형은 앞에 unsigned키워드를 붙여주면 됩니다. printf 함수에서 unsigned char, unsigned short는 서식 지정자 %d로도 충분히 출력할 수 있지만 unsigned int는 %u, unsigned long은 %lu, unsigned long long은 %llu로 출력해야 합니다.
- %u: 부호 없는(unsigned decimal) 10진수의 약어로 u를 사용합니다.
- %lu: long unsigned decimal에서 decimal을 제외한 첫 글자를 따서 lu를 사용합니다.
- %llu: long long unsigned decimal에서 decimal을 제외한 첫 글자를 따서 llu를 사용합니다.
참고로 GCC에서 컴파일 경고를 방지하려면 4123456789, 12345678901234567890 뒤에 자료형 크기에 맞는 정수 리터럴 접미사를 붙이면 됩니다('10.3 정수 리터럴 접미사 사용하기' 참조).