본문 바로가기
프로그래밍 언어/C언어

[c언어]printf 서식 지정자 %f로 int값을 출력하면 어떻게 될까?

by seongjko 2025. 7. 8.
728x90
int a = 10;
printf("%f", a);

 

이 코드의 결과는 어떨까?

아니 애초에 컴파일이 가능하긴 할까?

 

컴파일이 되긴 되는데 예측할 수 없다.

 

int 안에는 2의 보수법 형태의 이진수가 들어간다. 
float 안에는 IEEE 754 표준에 따라 지수부와 가수부로 나뉜 이진수가 들어간다.

즉, 두 자료형의 데이터 저장 구조가 다르다는 것이다.

그렇다면 printf 내부적으로

float를 character로 변환시키는 코드가 있을 것이고
int를 character로 변환시키는 코드가 있을 것이다.

 

애초에 변환 방법 자체가 다르기 때문에 예측할 수 없는 결과가 나온다.

추가로 이렇게 타입 간의 변환을 엄격하게 걸러내지 않는 c언어는

대표적으로 타입 안정성(type safety)이 약한 언어 중 하나다.

'프로그래밍 언어 > C언어' 카테고리의 다른 글

가변 인자에 대하여  (0) 2023.07.04
유효 숫자  (0) 2023.06.26
알면 알수록 헷갈리는 포인터 뽀개기  (0) 2023.06.25