我实在不懂为什么是-5536
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
実際、この質問は単純化して直接的に行うことができます
変数が short 型として定義されている場合、その完全名は 有符号短整数型 という 2 バイトを占め、その範囲は word から 0x0000 です。 0xffff から 0x0000 までの最大値は 0、つまり正の数です。 0x7fff から 0x7fff までの最大値は 1、つまり負の数です。 0xffffわかりました。10 進数の 、つまり 16 進数の 60000 は明らかに負の数であり、EA60 はもともと負の数 です。
short
有符号短整数型
word
0x0000
0xffff
0x7fff
60000
EA60
に変更しても、出力結果は unsigned short のままになります。 60000
unsigned short
メモリが範囲外です
Java の short のサイズ範囲は -32 768 ~ 32 767 です。Add 結果 60000 は明らかに範囲外 (32767) であるため、short 型にキャストするとエラーが発生します。 リーリー
簡素化
実際、この質問は単純化して直接的に行うことができます
リーリー根本的な理由
変数が
展開short
型として定義されている場合、その完全名は有符号短整数型
という 2 バイトを占め、その範囲はword
から0x0000
です。0xffff
から0x0000
までの最大値は 0、つまり正の数です。0x7fff
から0x7fff
までの最大値は 1、つまり負の数です。0xffff
わかりました。10 進数の、つまり 16 進数の
60000
は明らかに負の数であり、EA60
はもともと負の数 です。に変更しても、出力結果は
unsigned short
のままになります。60000
メモリが範囲外です
Java の short のサイズ範囲は -32 768 ~ 32 767 です。Add 結果 60000 は明らかに範囲外 (32767) であるため、short 型にキャストするとエラーが発生します。 リーリー