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

我实在不懂为什么是-5536

高洛峰
高洛峰

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

全員に返信(2)
伊谢尔伦

簡素化

実際、この質問は単純化して直接的に行うことができます

リーリー

根本的な理由

変数が short 型として定義されている場合、その完全名は 有符号短整数型 という 2 バイトを占め、その範囲は word から 0x0000 です。 0xffff から 0x0000 までの最大値は 0、つまり正の数です。 0x7fff から 0x7fff までの最大値は 1、つまり負の数です。 0xffffわかりました。10 進数の
、つまり 16 進数の 60000 は明らかに負の数であり、EA60 はもともと負の数 です。

展開

ここで型を

に変更しても、出力結果は unsigned short のままになります。 60000

いいねを押す +0
Peter_Zhu

メモリが範囲外です

Java の short のサイズ範囲は -32 768 ~ 32 767 です。Add 結果 60000 は明らかに範囲外 (32767) であるため、short 型にキャストするとエラーが発生します。 リーリー

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート