◎ %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;
}
실행 결과)
10진수는 %d와 %i가 모두 입력을 받았지만 8진수의 형태로 입력했을 때 %d는 10진수 10으로 입력받았고 %i는 8진수 010으로 입력받았기 때문에 10진수 8이 출력되는 것을 확인할 수 있다. 추가로 16진수는 %d가 입력을 받지 못함에 따라 위 코드를 기준으로 실행이 종료되게 된다.
'[Programming Language] > [C언어]' 카테고리의 다른 글
[C언어] :: 연산자(대입, 산술, 복합 대입, 증감, 관계, 논리, 조건, 비트 논리, 비트 이동) (1) | 2024.01.31 |
---|---|
[C언어] :: 상수(리터럴 상수, 심볼릭 상수, const, define) (0) | 2024.01.26 |
[C언어] :: 변수, 변수 선언 방법 및 주의사항, 변수의 사용, 변수의 시작 주소 및 & 연산자 (0) | 2024.01.25 |
[C언어] :: 기본 입출력(printf, 특수 문자, 서식 문자, scanf) (0) | 2024.01.18 |
[C언어] :: C언어 기본 구조(주석, 전처리기, 헤더파일, main 함수, 세미콜론, return) (1) | 2024.01.16 |