[Programming Language]/[C언어]

[C언어] :: %d와 %i의 차이점

Semincolon 2024. 2. 12. 20:15

◎ %d와 %i의 차이점

  %d와 %i는 둘다 정수형 데이터를 위해 사용하는 형식 지정자다. 똑같은 정수형 데이터를 위해 사용하는 형식 지정자라고 해도 분명 차이점이 존재할 것 같아서 찾아보았는데 그 내용은 다음과 같았다.

printf() 함수 처럼 출력을 위해 사용할 때는 차이가 존재하지 않다. 그러나 scanf() 함수 처럼 입력을 위해 사용할 때는 차이가 존재한다. %d는 10진수만 입력받을 수 있지만 %i는 10진수, 16진수, 8진수 모두 입력받을 수 있다.

 

예제 코드)

#include <stdio.h>
int main() {
	int a;
	
	scanf("%d", &a);
	printf("%%d : %d \n", a);
	
	scanf("%i", &a);
	printf("%%i : %d \n", a);
	
	return 0;
}

실행 결과)

1) 10진수 입력
2) 8진수 입력
3) 16진수 입력

  10진수는 %d와 %i가 모두 입력을 받았지만 8진수의 형태로 입력했을 때 %d는 10진수 10으로 입력받았고 %i는 8진수 010으로 입력받았기 때문에 10진수 8이 출력되는 것을 확인할 수 있다. 추가로 16진수는 %d가 입력을 받지 못함에 따라 위 코드를 기준으로 실행이 종료되게 된다.