Поскольку вы не используете суффикс, литералы 13
и 4
интерпретируются как целые числа:
Руководство :
Если буквальное не имеет суффикса, он имеет первый из этих типов , в которых его значение может быть представлено: int
, uint
, long
, ulong
.
Таким образом, поскольку вы объявляете 13
целое число, будет выполнено целочисленное деление:
Руководство :
Для операции формы x / y применяется разрешение перегрузки бинарного оператора, чтобы выбрать конкретную реализацию оператора. Операнды преобразуются в типы параметров выбранного оператора, а тип результата - это тип, возвращаемый оператором.
Предварительно определенные операторы деления перечислены ниже. Все операторы вычисляют частное x и y.
Целочисленное деление:
int operator /(int x, int y);
uint operator /(uint x, uint y);
long operator /(long x, long y);
ulong operator /(ulong x, ulong y);
И так происходит округление в меньшую сторону:
При делении результат округляется до нуля, а абсолютное значение результата - это максимально возможное целое число, которое меньше абсолютного значения частного двух операндов. Результат равен нулю или положительному, если два операнда имеют одинаковый знак, и нулю или отрицательному результату, если два операнда имеют противоположные знаки.
Если вы сделаете следующее:
int x = 13f / 4f;
Вы получите ошибку компилятора, поскольку деление с плавающей запятой ( /
оператор of 13f
) приводит к получению числа с плавающей запятой, которое не может быть неявно преобразовано в int.
Если вы хотите, чтобы деление было делением с плавающей запятой, вам нужно сделать результат с плавающей запятой:
float x = 13 / 4;
Обратите внимание, что вы по-прежнему делите целые числа, которые неявно будут преобразованы в float: результат будет 3.0
. Чтобы явно объявить операнды как float, используя f
суффикс ( 13f
, 4f
).
integer
разделение, а неfloating point
разделение.