一道关于Java的题目
高洛峰
高洛峰 2017-04-18 09:05:54
0
2
377

我实在不懂为什么是-5536

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

모든 응답(2)
伊谢尔伦

단순화

사실 이 질문은 단순화되고 직접적으로 표현될 수 있습니다

으아악

기본 이유

변수가 short 유형으로 정의되면 전체 이름은 有符号短整数型이 됩니다. 이 유형은 2바이트, 즉 word 유형을 차지하고 범위는 0x0000부터 0xffff까지입니다. 0x0000부터 0x7fff까지의 가장 높은 값은 0이며, 이는 양수를 의미합니다. 0x7fff부터 0xffff까지의 가장 높은 값은 1이며, 이는 음수를 의미합니다.
그렇다면 십진수 60000, 즉 16진수 EA60는 분명히 음수이고, 은 원래 음수 입니다.

확장

여기서의 유형을 unsigned short로 변경해도 출력 결과는 여전히 60000입니다.

Peter_Zhu

메모리 범위를 벗어났습니다

Java에서 short의 크기 범위는 -32 768에서 32 767입니다. Add 결과 60000이 분명히 범위(32767)를 벗어났기 때문에 short 유형으로 캐스팅할 때 오류가 발생합니다. 으아악

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿