2015-05-06 16 views
6

Versiyon: Visual Studio Professional 2013 Güncelleme 4
Yapı param:kısa + kısa! = Kısa?

short iCount = 20; 
short iValue = iCount + (short)1; 

bir kısa Ekleme: 32 bit doğrudur tercih

Aşağıdaki C# kodu hata anlamıyorum int aşağıdaki hatayla kısa sonuçlarına döküm:

Cannot implicitly convert type 'int' to 'short'. An explicit conversion exists (are you missing a cast?)

yukarıdaki hata, aşağıdaki durumlarda görülen, burada tamamen geçerli olduğunu:

short iCount = 20; 
short iValue = iCount + 1; 

aşağıdaki geçici çözüm hatayı kaldırır:

short iCount = 20; 
short iValue = (short)(iCount + 1); 

Yani forma "kısa + Int32 sabit" in eklenmesi görünüşte çalışır ve sonuç kısa artığını gereken Int32 vardır.

İlk kod örneğinin neden başarısız olduğunu veya bu bir derleyici hatasının neden bir açıklaması var mı? (4 Güncelleştirmeden sonra zorlukla inanabileceğim)

+0

Bu [cevap] 'a bir bakın (http://stackoverflow.com/questions/7504837/why-is-my-addition-of-2-shorts-causing-a-casting-compile-error-due- to-ints) – trebor

+0

[İlgili] (http://stackoverflow.com/a/3080381/335858) – dasblinkenlight

+0

[İlgili] (http://stackoverflow.com/questions/11853602/c-sharp-does-not-let- ayrıca bana iki tane-şort-a-kısa) – weston

cevap

3

Int, + operatörünün tanımlandığı en küçük imzalı örnektir, bu nedenle bu tür bir hatada kısa bir sonuç elde etmeye çalışın.

+0

İlginç! Daha eksiksiz bir cevap [burada] bulunabilir (http://stackoverflow.com/questions/4343624/integer-summing-blues-short-short-problem/4347752#4347752) – Gimly