接尾辞を使用しないため、リテラル13
と4
は整数として解釈されます。
マニュアル:
:リテラルは接尾辞を持っていない場合は、その値を表現することができるこれらのタイプの最初のを持ってint
、uint
、long
、ulong
。
したがって、13
整数として宣言するため、整数除算が実行されます。
マニュアル:
x / y形式の演算では、特定の演算子の実装を選択するために2項演算子のオーバーロード解決が適用されます。オペランドは選択した演算子のパラメーター型に変換され、結果の型は演算子の戻り型になります。
事前定義された除算演算子を以下に示します。演算子はすべて、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
)は浮動小数点数になり、暗黙的にintにキャストできないため、コンパイラエラーが発生します。
除算を浮動小数点除算にしたい場合は、結果を浮動小数点にする必要があります。
float x = 13 / 4;
整数を除算することに注意してください。これは暗黙的に浮動小数点にキャストされ、結果はになります3.0
。f
接尾辞(13f
、4f
)を使用して、オペランドを浮動小数点として明示的に宣言するには
integer
分割ではなくfloating point
分割だからです。