2015-05-06 15 views
6

Versione: Visual Studio Professionale 2013 Update 4
Corporatura param: Preferisco a 32 bit è verobreve + corto! = Corto?

Non capisco l'errore nel seguente codice C#:

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

L'aggiunta di un breve a un int colato ad una breve produce il seguente errore:

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

l'errore precedente, visto anche nel caso che segue, è perfettamente valido qui:

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

La seguente soluzione alternativa rimuove l'errore:

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

Così Inoltre nella forma "corta + Int32 costante" a quanto pare funziona e il risultato è Int32, che deve essere gettato a breve.

Esiste una spiegazione del perché il primo esempio di codice fallisce o si tratta di un bug del compilatore? (che non riesco a credere dopo 4 aggiornamenti)

+0

Dai un'occhiata a questo [risposta] (http://stackoverflow.com/questions/7504837/why-is-my-addition-of-2-shorts-causing-a-casting-compile-error-due- to-ints) – trebor

+0

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

+0

[correlati] (http://stackoverflow.com/questions/11853602/c-sharp-does-not-let- me-sum-two-shorts-to-a-short) – weston

risposta

3

Int è il più piccolo tipo firmato per cui è definito l'operatore +, quindi cercando di usare + su un risultato breve in quel tipo di errore.

+0

Interessante! Una risposta più completa può essere trovata [qui] (http://stackoverflow.com/questions/4343624/integer-summing-blues-short-short-problem/4347752#4347752) – Gimly

Problemi correlati