short형 변수에 입력할 때 %d를 쓰면 안되는 이유

Поделиться
HTML-код
  • Опубликовано: 29 янв 2025

Комментарии • 6

  • @kkkido9732
    @kkkido9732 2 года назад +2

    scanf의 역할을 잘 이해했습니다 좋은영상 감사합니다! 그럼 만약에 변수의 메모리 할당이 4바이트고 scanf의 입력 할당이 2바이트면, 그때는 반대로 넉넉해서 문제가 없는걸까용?

    • @clecture
      @clecture  2 года назад

      네 그렇지요. int형 변수에 입력하는데 %hd 변환문자를 사용하면 4바이트 공간 중에서 절반인 2바이트에만 입력이 됩니다. 그리고 그 변수를 사용하면 4바이트 값이 모두 쓰이므로 나머지 2바이트의 쓰레기 값이 함께 사용되어 어떤값이 될지 알 수 없습니다. 결국 변수의 자료형에 맞는 정확한 변환문자를 사용해서 입력해야 정확한 결과를 얻을 수 있습니다.

  • @therelaxrampelzi9021
    @therelaxrampelzi9021 Год назад

    혼공C ebook으로 잘 공부하고 있습니다!
    책 내에 레벨업 스킬 파트가 어디있는지 몰라서 구글링하다가 유튜브에 이 강의를 찾았습니다
    혹시 책에 어디쯤에 레벨업 스킬 파트가 있을까요? ㅠㅡㅠ

  • @LiLi-db2ri
    @LiLi-db2ri 2 года назад +1

    Printf 함수 %d로 더 작은 바이트 변수들 출력할 수 있지만 그래도 서식 맞춰주는 게 좋나요?

    • @clecture
      @clecture  2 года назад

      정수와 실수는 데이터 형태가 달라 서식을 맞춰줘야 하고요. 정수는 char, short, int 모두 %d로 출력하면 됩니다. print함수가 인수를 받는 크기가 int형에 맞춰져 있으니 char, short등 크기가 int보다 작으면 크기를 늘려서 처리합니다. 따라서 모두 %d나 %u로 출력하면 되고요. long이나 long long의 경우는 크기가 클 수 있으니 꼭 %ld나 %lld로 출력해야 합니다.

    • @LiLi-db2ri
      @LiLi-db2ri 2 года назад

      @@clecture 감사합니다.