接尾辞を使用しないため、リテラル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);
したがって、切り捨てが発生します。
除算は結果をゼロに向けて丸め、結果の絶対値は、2 つのオペランドの商の絶対値より小さい可能な最大の整数です。2 つのオペランドの符号が同じ場合、結果はゼロまたは正になり、2 つのオペランドの符号が反対の場合、結果はゼロまたは負になります。
次の場合:
int x = 13f / 4f;
浮動小数点除算 ( の/
演算子13f
) の結果が float になり、 int に暗黙的にキャストできないため、コンパイラ エラーが発生します。
除算を浮動小数点除算にしたい場合は、結果を浮動小数点にする必要があります。
float x = 13 / 4;
暗黙的に float にキャストされる整数を引き続き除算することに注意してください。結果は になります3.0
。f
サフィックス ( 13f
, )を使用して、オペランドを float として明示的に宣言します4f
。