Como você não usa nenhum sufixo, os literais 13e 4são interpretados como número inteiro:
Manual :
Se o literal tem nenhum sufixo, tem o primeiro desses tipos em que o seu valor pode ser representados: int, uint, long, ulong.
Assim, como você declara 13como inteiro, a divisão inteira será realizada:
Manual :
Para uma operação no formato x / y, a resolução de sobrecarga do operador binário é aplicada para selecionar uma implementação específica do operador. Os operandos são convertidos nos tipos de parâmetro do operador selecionado e o tipo do resultado é o tipo de retorno do operador.
Os operadores de divisão predefinidos estão listados abaixo. Todos os operadores calculam o quociente de x e y.
Divisão inteira:
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 assim ocorre o arredondamento:
A divisão arredonda o resultado para zero e o valor absoluto do resultado é o maior número inteiro possível que é menor que o valor absoluto do quociente dos dois operandos. O resultado é zero ou positivo quando os dois operandos têm o mesmo sinal e zero ou negativo quando os dois operandos têm sinais opostos.
Se você fizer o seguinte:
int x = 13f / 4f;
Você receberá um erro do compilador, pois uma divisão de ponto flutuante (o /operador de 13f) resulta em um ponto flutuante, que não pode ser convertido para int implicitamente.
Se você deseja que a divisão seja uma divisão de ponto flutuante, terá que transformar o resultado em flutuante:
float x = 13 / 4;
Observe que você ainda dividirá números inteiros, que serão implicitamente convertidos para flutuar: o resultado será 3.0. Para declarar explicitamente os operandos como flutuante, usando o fsufixo ( 13f, 4f).
integerdivisão, nãofloating pointdivisão.