由于您不使用任何后缀,因此文字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
)导致浮点数,不能隐式转换为 int。
如果您希望除法是浮点除法,则必须使结果为浮点数:
float x = 13 / 4;
请注意,您仍将除以整数,这将隐式转换为浮点数:结果将是3.0
. f
使用后缀 ( 13f
, )将操作数显式声明为浮点数4f
。