• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

signed char에 최고 FF가 홀드 되어야 하는데 왜 FFFF가 표시 되는지 궁금합니다

21.07.27 17:55 작성 조회수 233

0

4.10절 21라인 강의를 듣다가 아래와 같은 시험을 하였습니다. 

- 변수 j signed char로서 1바이트에 – 128 ~ 127까지를 저장(hold)할 수 있다.<o:p></o:p>

- scanf() -1을 읽어 들이면 마이너스는 2의 보수로 표현하므로 jFF가 입력되어야 한다. 그런데 첫번째 printf를 보시면 왜 FFFF가 표시 되는지 모르겠습니다. 

2번,3번째 printf는 형식지정자에 맞게 출력 된 것 같기도 합니만, j변수에는 분명 FF가 저장되어 있을 텐데 이해가 가지 않습니다. 그 이후 printf도 마찬가지입니다

답변 2

·

답변을 작성해보세요.

0

감사합니다. 형식지정자를 정확하게 사용하겠습니

0

안소님의 프로필

안소

2021.07.28

안녕하세요 :)

질문자님 코드에서 첫번째 printf 와 마지막 printf 코드만 적용하여 실행해본 모습입니다.

(근데 저는 이 코드 런타임 에러가 나던데 질문자님께선 안나셨나요..?)

제 환경에선 첫번째 printf 는 ff 두개만 잘 출력하고 있습니다.

질문자님께선 비주얼 스튜디오 코드를 쓰고 계시는 것 같은데 환경마다 다른게 아닐까 싶습니다..

-

j 를 signed char (1byte)로 설정을 하셨는데 입력은 lld 즉 long long double(8byte) 타입으로 받으셨고 출력도 signed char 인 j 를 다양한 타입으로 출력하고 계십니다. 출력 결과가 다 다른것은 이러한 것에서 비롯된 차이라고 보여집니다. 선언한 변수에 맞게끔 입출력 서식 지정자를 통일시켜주는 것이 좋습니다. 데이터손실이 생길 수도 있고 원하지 않는 결과를 입출력 하게 될 수 있기 때문입니다.