为什么var求值为int而不是double?

时间:2014-12-12 06:49:59

标签: c# .net

在下面的代码中,为什么编译器将结果变量计算为3(整数)但不是3.5(浮点数或双精度数)?

void Main()
{
    var result = 7/2;
    Console.WriteLine(result);
}

由于

4 个答案:

答案 0 :(得分:10)

因为,如果您将一个int除以另一个int,则结果为7 / 3。那是指定here

  

当你除以两个整数时,结果总是一个整数。例如,2的结果为var

然后int只使用表达式类型来创建double,因为这就是你想要的(尽管是隐含的)。如果你想要var result = 7.0 / 2; ,你需要强制表达式的类型为double:

int

或者,如果您使用.0 变量,那么您不能只使用int seven = 7; int two = 2; var result = (double)seven / two;

{{1}}

答案 1 :(得分:6)

因为您正在进行整数除法。

您需要将其中一个值转换为 float / double 以获得预期结果。

试试这个:

void Main()
{
  var result = 7/2.0; //convert 7 or 2 to double
  Console.WriteLine(result);
}

答案 2 :(得分:1)

/等运算符也类似于函数。 int/int的签名是

public static int operator /(int numerator, int denominator)
{
    //
}

因此返回值为int

答案 3 :(得分:0)

正如其他人所指出的那样,你得到3而不是3.5,因为你正在进行整数除法。大多数答案暗示但未明确说明为什么它是整数除法。它是整数除法,因为两个操作数都是整数。它们都是整数,因为7和2是整数文字。如果向任一文字添加小数点,它将成为双字面,从而导致执行双重除法而不是整数除法。将double除以int或int除以double时使用双除法。