변수가 short 유형으로 정의되면 전체 이름은 有符号短整数型이 됩니다. 이 유형은 2바이트, 즉 word 유형을 차지하고 범위는 0x0000부터 0xffff까지입니다. 0x0000부터 0x7fff까지의 가장 높은 값은 0이며, 이는 양수를 의미합니다. 0x7fff부터 0xffff까지의 가장 높은 값은 1이며, 이는 음수를 의미합니다. 그렇다면 십진수 60000, 즉 16진수 EA60는 분명히 음수이고, 은 원래 음수 입니다.
확장
여기서의 유형을 unsigned short로 변경해도 출력 결과는 여전히 60000입니다.
단순화
사실 이 질문은 단순화되고 직접적으로 표현될 수 있습니다
으아악기본 이유
변수가
short
유형으로 정의되면 전체 이름은有符号短整数型
이 됩니다. 이 유형은 2바이트, 즉word
유형을 차지하고 범위는0x0000
부터0xffff
까지입니다.0x0000
부터0x7fff
까지의 가장 높은 값은 0이며, 이는 양수를 의미합니다.0x7fff
부터0xffff
까지의 가장 높은 값은 1이며, 이는 음수를 의미합니다.그렇다면 십진수
60000
, 즉 16진수EA60
는 분명히 음수이고, 은 원래 음수 입니다.확장
여기서의 유형을
unsigned short
로 변경해도 출력 결과는 여전히60000
입니다.메모리 범위를 벗어났습니다
Java에서 short의 크기 범위는 -32 768에서 32 767입니다. Add 결과 60000이 분명히 범위(32767)를 벗어났기 때문에 short 유형으로 캐스팅할 때 오류가 발생합니다. 으아악