在.net中"o"的价值是什么?为什么?

pit*_*met -2 .net c#

在.NET中,"o"的价值是什么?为什么?

object o = 3/2;
Run Code Online (Sandbox Code Playgroud)

我的想法是默认类型的对象是值适合的最低类型,因此答案适合的最小/最小/最小对象是int32,那么就是设置为基类的对象.

那似乎对吗?

Ser*_*kiy 9

这称为整数除法.请参阅/运算符(C#参考):

除以两个整数后,结果始终为整数.例如,7/3的结果是2.

另外C#规范7.7.2分部运营商:

整数除法:

除法将结果舍入为零,结果的绝对值是小于两个操作数的商的绝对值的最大可能整数.当两个操作数具有相同符号时,结果为零或正,当两个操作数具有相反符号时,结果为零或负.

因此,舍入结果向零给出13/2.如果你想获得浮点数,那么你应该使用浮点除法(即至少有一个操作数应该是浮点值):

object o = 3F/2; // 1.5
Run Code Online (Sandbox Code Playgroud)