본문 바로가기

Education

[부스트 코딩 뉴비 챌린지 2020] week2_Q&A : 형식 연산자 %i와 %d

반응형

강의를 들으면서 정수를 출력할 때 %i를 사용한다고 배웠다. 하지만 예전에 C언어 수업을 들을 때 %d를 자주 사용했던 걸로 기억한다. 기억을 따라 그 당시 수업에 배웠던 교재를 펼쳐보니 %i의 형식은 전혀 사용하지 않았었다. 따라서 %i는 무엇이고 %d는 무엇이지? 라는 의문이 들며 혼란스러웠다.

 

C언어에서 정수형인 데이터(int, long, short, ...) 출력할 %d 사용하는데, 강의에서는 %i 소개하고 있습니다. %i %d 어느 것이 맞나요?

  • %d: 내가 이제 변수를 하나 입력받을껀데 그건 32비트 10진수야!
  • %i : 내가 이제 변수를 하나 입력받을껀데 그건 integer type 이야!

여기서 약간 뉘앙스가 달라진다. 물론 결과도 달라지지만. %d입력변수가 10진수라는것을 가정하므로 8진수 접미나(0) 라던가 16진수 접미사(0x)를 무시한다. 즉, 010는 그냥 10으로, 0x10역시 그냥 10으로 인식한다. 

하지만 %i는 다르다. 입력변수의 진법을 모르기때문에 접미사를 확인하고 해당하는 진법에 맞게 입력을 받아드린다. 따라서 010을 12(10진수로)로 0x10을 a로 출력할 수 있는 것이다.

보통 int형 변수를 입출력 시 사용하는 %d가 decimal 을 의미하고 integer는 %i 로 따로 나타낸 다는 것을 배웠다.

 

 

 


참고 자료

https://ipcvhomme.tistory.com/m/3

 

 

반응형