C unmanaged

printf() 작동원리

느억맘 2021. 6. 2. 14:50

저렇게 순차적으로 왼쪽부터 아래에 차례대로 스택에 저장되는데

 

float 의 경우엔 원래 4byte 이지만 printf 함수로 인해 double로 저장됨 고로 8byte를 할당받음.(왜그런진 모름)

 

고로 저렇게 8byte 8byte 4byte 이렇게 차례대로 저장되는데

 

만약에 변환지정자가 decimal 일경우 얘 같은경우 한번에 4byte만 읽어들이므로

 

위에 차례대로 4byte 4byte 4byte 이렇게만 읽고 나머지 데이터는 안읽음..

 

고로 데이터가 막 뒤엉켜서 이상한 값이 나오게됨.

 

또, float double은 애초에 실수형인데 이걸 lld 같은 읽어들이는 데이터크기는 8byte로 똑같지만 원래

 

정수형한테만 쓰는걸 써버리면 역시나 마찬가지로 이상한 값이 나오게 된다.

 

고로 데이터를 출력할땐 그에 맞는 것만 쓰자

'C unmanaged' 카테고리의 다른 글

getchar() 버퍼 비우는법  (0) 2021.06.15
형식 지정자에 따른 오버, 언더플로우  (0) 2021.05.28
컴퓨터의 작동 원리  (0) 2021.05.14