Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C언어에서 %d와 %i 형식 지정자의 차이점 완벽 정리


%d 형식 지정자란?

%d 형식 지정자는 정수 값을 부호 있는 10진수(signed decimal integer)로 처리합니다. 즉, 값이 양수이든 음수이든 상관없이 항상 10진수 형태로 해석되어 출력됩니다.

다음은 C 언어에서 %d 형식 지정자를 사용한 예제입니다.

예제

#include <stdio.h>
int main() {
    int v1 = 7456;
    int v2 = -17346;
    printf("10진수 형태의 값 : %d\n", v1);
    printf("음수 형태의 값 : %d", v2);
    return 0;
}

실행 결과

10진수 형태의 값 : 7456
음수 형태의 값 : -17346

%i 형식 지정자란?

%i 형식 지정자 역시 정수 값을 처리하지만, 10진수뿐만 아니라 8진수와 16진수도 인식할 수 있다는 점이 특징입니다. 숫자 앞에 0을 붙이면 8진수로, 0x를 붙이면 16진수로 해석됩니다.

다음은 C 언어에서 %i 형식 지정자를 사용한 예제입니다.

예제

#include <stdio.h>
int main() {
    int v1 = 1327;
    int v2 = 0x42451;
    printf("10진수 형태의 값 : %d\n", v1);
    printf("16진수 리터럴의 값 : %i", v2);
    return 0;
}

실행 결과

10진수 형태의 값 : 1327
16진수 리터럴의 값 : 271441

%d와 %i의 차이점 정리

출력 함수인 printf()에서 %d와 %i는 사실상 동일하게 동작하며, 둘 다 값을 부호 있는 10진수로 출력합니다. 두 지정자의 실질적인 차이는 입력 함수인 scanf()에서 드러납니다.

  • %d : 입력값을 항상 10진수로만 해석합니다.
  • %i : 입력값의 접두사에 따라 10진수, 8진수(0 접두사), 16진수(0x 접두사)를 자동으로 구분하여 해석합니다.

따라서 사용자 입력처럼 다양한 진법이 들어올 수 있는 상황에서는 %i가 유용하고, 항상 10진수만 다룬다면 의미를 더 명확히 드러내는 %d를 사용하는 것이 좋습니다.