작성
·
327
0
4.10절 21라인 강의를 듣다가 아래와 같은 시험을 하였습니다.
- 변수 j는 signed char로서 1바이트에 – 128 ~ 127까지를 저장(hold)할 수 있다.
- scanf() 로 -1을 읽어 들이면 마이너스는 2의 보수로 표현하므로 j에 FF가 입력되어야 한다. 그런데 첫번째 printf를 보시면 왜 FFFF가 표시 되는지 모르겠습니다.
2번,3번째 printf는 형식지정자에 맞게 출력 된 것 같기도 합니만, j변수에는 분명 FF가 저장되어 있을 텐데 이해가 가지 않습니다. 그 이후 printf도 마찬가지입니다
답변 2
0
0
안녕하세요 :)
질문자님 코드에서 첫번째 printf 와 마지막 printf 코드만 적용하여 실행해본 모습입니다.
(근데 저는 이 코드 런타임 에러가 나던데 질문자님께선 안나셨나요..?)
제 환경에선 첫번째 printf 는 ff 두개만 잘 출력하고 있습니다.
질문자님께선 비주얼 스튜디오 코드를 쓰고 계시는 것 같은데 환경마다 다른게 아닐까 싶습니다..
-
j 를 signed char (1byte)로 설정을 하셨는데 입력은 lld 즉 long long double(8byte) 타입으로 받으셨고 출력도 signed char 인 j 를 다양한 타입으로 출력하고 계십니다. 출력 결과가 다 다른것은 이러한 것에서 비롯된 차이라고 보여집니다. 선언한 변수에 맞게끔 입출력 서식 지정자를 통일시켜주는 것이 좋습니다. 데이터손실이 생길 수도 있고 원하지 않는 결과를 입출력 하게 될 수 있기 때문입니다.