#include <stdio.h>
int main(){
short s; // short 형 선언
char c; // char 형 선언
s = 257; // short 에 257 assign
c = s // char 에 short 값 대입
s = c // 다시 short 에 char 값 대입
printf("s값 : \n",s); // short 값 출력
printf("c값 : \n",c); // char 값 출력
return 0;
}
이대로 컴파일을 했는데
short 값 과 char 값이 모두 1로 출력되.
short 가 2byte 이고 char가 1바이트인건 알고있는데
short 값을 char 에 넣었다가 다시 short 값에 대입한후
출력했을때 short 와 char 값이 모두 1이 나오는지 궁금해
도저히 모르겠다
존나 간단한거라는데 모르겠어
그건 바로, short가 2리터짜리 비커이고 char이 1리터짜리 비커이기 때문이죠. 2리터비커의 물을 1리터 비커에 부은 다음에 1리터짜리비커에 들어간 물을 2리터짜리 비커에 넣으셨네요.
char는 0~255까지 들어감.
따라서 255 -> 0 1 해서 1이 들어갔고 그걸 다시 short에 넣었으니 1이 들어가있는거지
허세갑형 말대로면 물이 왜 1리터가 아닌 1미리리터가 나왔냐고 잘못이해할 가능성 있으니까
별로 좋지 않은 예라고 생각해
스노플 // char 에 256을 넣어도 출력하면 1이 되는거야 그럼?? 음 그러니까 넘치는 값을 넣게 되면 무조건 1이 되는거야??
256을 넘으면 0이됨
ㅇㅋ?
258넣으면 2됨
아 그리고 잘못말해준거 하나 char이 범위가 0~255가 아니라 -128~127이었음
스노플 // 답변 고마워 그러면 256 = 0 , 257 = 1 ...... 이런식으로 0 1 0 1 식으로 계속 간다는 말인거지??
넘치면 가장 처음부터 다시 돌아와 원 생각하면 이해하기 쉬울듯
으응 언사인드인경우에는 0 ~ 255 인거 알고있어 범위는 알고 있었는데 왜 1이 출력 되는지가 궁금한거였어
아하 0 1 0 1 이 아니라 다시 돌아와서 그값이 출력되는거구나 원을 생각하면 된다니까 바로 이해가되네
스노플 // 형 고마워 정말 큰도움이 됐어
아 그렇구나..