ಠ_ಠ
萬事問噗浪 12/06問程式

問一下程式課 JAVA運算 型別轉換的問題

1. public class Test {
2. public static void main(String[] args) {
3. byte a = 10, b= 1;
4. byte c = (a+b);

在第4行,eclipse跳出紅色曲折線,並提示
Multiple markers at this line
- Type mismatch: cannot convert from int to byte
- The value of the local variable c is not used
ಠ_ಠ
我知道第4行的 (a+b),系統預設基本型別是int,也知道正確寫法是
byte c = (byte) (a+b);

但為什麼系統要跳 "編譯有問題" 的 曲折線呢
ಠ_ಠ
byte的範圍不是 -128~127 ?
int 範圍則是 -21億4748萬3648 ~ 21億4748萬3647 嗎?

那我a+b也才11,為甚麼要提醒呢?
ಠ_ಠ
如果有熟悉的旅人,再麻煩了謝謝
rice2953
byte c = (byte)(a + b);
rice2953
類型有問題->編譯有問題
和範圍沒關係
fries4245
不懂程式問題
我只是想說會這些的旅人都好強看起來好帥
ಠ_ಠ
rice2953: 啊!!!
我忘記ㄌ,等號左右不同型別,電腦不會自己幫我算啊啊啊~

我剛剛還在想為啥我數值有在 byte 範圍,他不幫我算,卡住的是我

真的很謝謝旅人幫我這個小白解說,要去跪鍵盤了超基礎的問題
ಠ_ಠ
fries4245: 旅人太高估我ㄌ,我如果去問老師這題是會被電爆的 (但老師還是會很友善地講一遍給我聽)

如果說學程式是在學怎麼跟電腦講話,用英文比喻,噗主大概就是把 This is a book 講成 This are a book的感覺,把單數類別跟複數類別的用法完全搞錯
ಠ_ಠ
程式根本是小學階段的我,真的很感謝偷偷說上大大的友善回覆
ಠ_ಠ
0.1+0.2 != 0.3 原因
二進位不能精準表示十進位
为什么0.1+0.2=0.30000000000000004而1.1+2.2=3.30000000000...
ಠ_ಠ
定點數能表示的數字有限,因為小數點固定,整數位和小數位就固定,不利於表達特別大或特別小數,浮點數就可以表示很大或很小的數字,因為小數點不固定

例如123.45 使用十浮動計數科學法可以表達為1.2345 × 10² ,其中1.2345 為尾數,10 為基數,2 為指數。浮點利用指數達到了浮動小數點的效果,從而可以靈活地表達更大範圍的實數。

回應者:鍵盤俠
載入新的回覆