Оскільки ви не використовуєте який - або суфікс, літерали 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;
Ви отримаєте помилку компілятора, оскільки поділ з плаваючою комою ( /
оператор 13f
) призводить до поплавця, який не можна привласнювати неявно.
Якщо ви хочете, щоб поділ був поділом з плаваючою комою, вам доведеться зробити результат поплавком:
float x = 13 / 4;
Зауважте, що ви все одно розділите цілі числа, які буде неявно закинуто плавати: результат буде 3.0
. Щоб явно оголосити операнди як плаваючі, використовуючи f
суфікс ( 13f
, 4f
).
integer
поділ, а неfloating point
поділ.