資料型別轉換

2022-09-03 15:42:19 字數 782 閱讀 4301

int a=0200;

system.out.println((byte)a);

你認為應該輸出什麼?

我們再看

int a = 200;

system.out.println((byte)a);

結果是-56

int a = 0200;

system.out.println((byte)a);

結果是-128

int a = 0200;

system.out.println(a);

結果是128

為什麼呢?

int a=0200;

0200 是個八進位制數,十進位制值為 128 (以0為開頭的數字為八進位制)

system.out.println((byte)a);

先看看 int 型別的 128 用二進位制表示為:

0000 0000 0000 0000 0000 0000 1000 0000

再採用 byte 強制向下轉型時會擷取最低的 8 位,即擷取到 1000 0000

byte 是有符號數,因此高位的 1 是個符號位,表示這個數是個負數。

byte 的 1000 0000 轉為十進位制表示可以這樣做,將所有的非符號位取反,再加 1,最後新增負號就行了

比如:1000 0000 的非符號位為 000 0000,取反後為 111 1111,再加 1 為 1000 0000,即 128,再添上

負號變成 -128,這也就說明 byte 的 1000 0000 值為 -128。

資料型別 型別轉換

這樣的語句將報錯,因為char型別精度低於int型別,編譯器無法將其自動轉換,只能進行強制轉換 int x 65 char ch char x 舉例1 int age 19 char 女 char result age int 不可以自動轉換成char 精度損失 舉例2 int a 10 int b...

Objective C資料型別 資料型別轉換

資料型別 1.objective c資料型別可以分為 基本資料型別 物件資料型別和id型別。2.基本資料型別有 int float double和char型別。3.物件型別就是類或協議所宣告的指標型別,例如 nsautoreleasepool pool 其中,nsautoreleasepool是乙個...

資料型別轉換

資料型別轉換 public class typeconvert 一 容量小的資料型別自動轉換為容量大的資料型別 資料型別按容量大小排序為 byte,short,char int long float double byte,short,char之間不會互相轉換,他們三者在計算時首先回轉換為int型別...