char형 값 범위 질문이요
가든
2023.04.01
질문 제목 : 질문 내용 :
#include stdio.h
int main()
{
char x, y;
x = -128;
y = x;
printf(%d, %d\n, --x, y-1);
return 0;
}
결과가 127, -129가 나오는데127은 왜그런지 알겠는데
왜 -129가 나오나요?
-
푸헷
ㅎㅎ 이런 문제는 잘 생각하셔야 합니다. 자료형의 자동변환에 관련된 문제인데 %d는 기본적으로
signed long int를 가정해서 출력합니다. --x라고 하면 이것은 x=x-1해서 x값이 -128-1 = -129인데 이것이 chat type x에 넣어줄 때 127로 변경되어(+256) 저장되고 나서 x값을 출력하니까 127 되는 것이구요.
y-1은 -128-1 = -129 인데 이것은 signed long int형 -129이기 때문에 (char t -
연블랙
앞에 127은 x=x-1 이기 때문에 오버플로우가 된 상황이고
후자 -129는 y-1에 1이 int형이기 때문에 int형으로 계산됩니다.