Conversioni aritmetiche consueti
La maggior parte degli operatori C# eseguono conversioni di tipi per aggiornare gli operandi di un'espressione in un tipo comune o per estendere i brevi valori fino la dimensione Integer utilizzata nelle operazioni del computer.Le conversioni eseguite dagli operatori c# dipendono dall'operatore specifico e dal tipo dell'operando o di operandi.Tuttavia, molti operatori eseguono le conversioni simili su operandi dei tipi integrali e di galleggiamenti.Queste conversioni sono noti come “conversioni aritmetiche.„ La conversione di un valore di operando a un tipo compatibile non si modifica il valore.
Le conversioni aritmetiche riepilogate in vengono definite “conversioni aritmetiche normali.„ Questi passaggi vengono applicati solo per gli operatori binari che prevedono il tipo aritmetico.Lo scopo di rendere un tipo comune che è anche il tipo del risultato.Per determinare le conversioni effettivamente hanno luogo, il compilatore applica l'algoritmo alle operazioni binarie nell'espressione.Di seguito non sono un ordine di precedenza.
Se uno degli operandi è di tipo long double, l'altro operando viene convertito nel tipo long double.
Se lo stato di precedenza non viene riempito e uno degli operandi è di tipo doppio, l'altro operando viene convertito nel tipo doppio.
Se le due condizioni superiore non vengono soddisfatte e uno degli operandi è di tipo float, l'altro operando viene convertito nel tipo float.
Se le tre condizioni superiore non vengono soddisfatte (nessuno degli operandi siano dei tipi di mobile), pertanto le conversioni integrali vengono eseguite su operandi come segue:
Se uno degli operandi è di tipo unsigned long, l'altro operando viene convertito nel tipo unsigned long.
Se lo stato di precedenza non viene riempito e uno degli operandi è di tipo tempo e l'altro di tipo unsigned int, entrambi gli operandi sono convertiti nel tipo unsigned long.
Se le due condizioni superiore non vengono soddisfatte e uno degli operandi è di tipo tempo, l'altro operando viene convertito nel tipo tempo.
Se le tre condizioni superiore non vengono soddisfatte e uno degli operandi è di tipo unsigned int, l'altro operando viene convertito nel tipo unsigned int.
Se nessuna delle condizioni in precedenza sono soddisfatte, entrambi gli operandi sono convertiti nel tipo int.
Il codice seguente vengono illustrate queste regole di conversione:
float fVal;
double dVal;
int iVal;
unsigned long ulVal;
dVal = iVal * ulVal; /* iVal converted to unsigned long
* Uses step 4.
* Result of multiplication converted to double
*/
dVal = ulVal + fVal; /* ulVal converted to float
* Uses step 3.
* Result of addition converted to double
*/