Neden

2016-04-12 28 views
0

sonek kabul edilir Aşağıdaki kod, x değeri long değeri olduğundan derleme yapmaz. Yani ikinci satırda, y'a uzun bir değer atanması mümkün değildir.Neden

long x = 10; 
int y = 2 * x; 

Sorum şu: ilk satır tip long ait değişkeninde ekini L yoktur, tip int olması kabul edilmemelidir?

+1

Bir "uzun" atandığında, uzun bir süre. – Siguza

+0

[İlkel Dönüşümün Genişletilmesi] (https://docs.oracle.com/javase/specs/jls/se8/html/jls-5.html#jls-5.1.2) –

cevap

0

İşlemi gerçekleştirmeden önce int ürününe aktarmanız gerekir.

long x = 10; 
int y = 2 * (int)x; 
0

senin işlemin sonucu bir int olmalıdır. Eğer daraltma dönüşümü yapmıyorsanız o.k.a. Operasyonunuzdaki herhangi bir ilkel sayı tipinin cast operasyonu, o zaman operasyonunuzun sonucunun daha geniş aralıklı sayıya sahip olacağı anlamına gelir. Derleme, derleyicinin sonucunuzun bir int kapsamı içinde olacağından ve bu şekilde bilgi kaybetmemeniz gerektiğini bildiğinden emin olmanıza izin verirsiniz. örneğin, ama bu tamamen farklı bir konu). here sorunuzu ilgilendiren konular hakkında mükemmel bir açıklama bulabilirsiniz.