比如byte b = 1; char c = 1;
,如果整数类型默认是int类型的话,那么byte b = 1;应该需要强转换才对,因为int是高精度的,但这里明显不报错,这是为什们呢?
迷茫2017-04-18 10:53:57
首先,整數型別預設是int。這個毫無疑問。
其次,在允許的類型範圍內,在此處byte:-128~127
而整數int 1 在這個範圍,編譯器會對常數自動進行向下的轉換。
如果超出這個範圍的常數,編譯器直接報錯。
天蓬老师2017-04-18 10:53:57
不對的,兩個整形相加,如果小於等於int,則預設是int,如果其中一個為long,則預設按照long;
你試試申明兩個byte變量,然後相加賦值給另一個byte變量,編譯器會提示出錯的,需要強制型別轉換的