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를 생략합니다. 또한, shortlongint를 생략하여 사용합니다. 여기서 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 정수 리터럴 접미사 사용하기' 참조).