Dato che non usi alcun suffisso, i letterali 13
e 4
vengono 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 13
come 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 f
suffisso ( 13f
, 4f
).
integer
divisione nonfloating point
divisione.