Dato che non usi alcun suffisso, i letterali 13e 4vengono interpretati come numeri interi:
Manuale :
Se il letterale non ha suffisso, ha il primo di questi tipi in cui il suo valore può essere rappresentato: int, uint, long, ulong.
Pertanto, poiché si dichiara 13come intero, verrà eseguita la divisione dei numeri interi:
Manuale :
Per un'operazione nel formato x / y, viene applicata la risoluzione di sovraccarico dell'operatore binario per selezionare un'implementazione specifica dell'operatore. Gli operandi vengono convertiti nei tipi di parametri dell'operatore selezionato e il tipo del risultato è il tipo di ritorno dell'operatore.
Gli operatori di divisione predefiniti sono elencati di seguito. Tutti gli operatori calcolano il quoziente di xe y.
Divisione intera:
int operator /(int x, int y);
uint operator /(uint x, uint y);
long operator /(long x, long y);
ulong operator /(ulong x, ulong y);
E così si verifica l'arrotondamento:
La divisione arrotonda il risultato a zero e il valore assoluto del risultato è il numero intero più grande possibile che è inferiore al valore assoluto del quoziente dei due operandi. Il risultato è zero o positivo quando i due operandi hanno lo stesso segno e zero o negativo quando i due operandi hanno segni opposti.
Se esegui le seguenti operazioni:
int x = 13f / 4f;
Riceverai un errore del compilatore, poiché una divisione in virgola mobile (l' /operatore di 13f) genera un float, che non può essere implicitamente lanciato.
Se vuoi che la divisione sia una divisione in virgola mobile, dovrai rendere il risultato un float:
float x = 13 / 4;
Si noti che continuerai a dividere numeri interi, che verranno implicitamente lanciati su float: il risultato sarà 3.0. Per dichiarare esplicitamente gli operandi come float, usando il fsuffisso ( 13f, 4f).
integerdivisione nonfloating pointdivisione.