0
當我執行下面的代碼時,我期望它得到警告「不能從long轉換爲float」,因爲float是32位,long是64位大小。 但看起來沒有警告, 任何人都可以解釋我怎麼樣?爲什麼編譯器在給float賦值時不會給出錯誤?
public static void main(String[] args)
{
float a=1;
long b=123;
a=b;
System.out.println(a);
}
如果float不能保持賦值,那麼它會溢出/下溢 –
@MohammadAdil:它可能無法保存* exact *值(在這種情況下它會舍入),但它不會溢/下溢。 –
通過定義擴展意味着將類型轉換爲更寬範圍的類型(儘管可能精度更低)當擴展時,不可能出現下溢或溢出。 –