为什么除法的结果在C#中自动为int?

为什么除法的结果在C#中自动为int?,c#,C#,我有一句话: Console.WriteLine((double)(1 / 4))); Console.WriteLine((double)1 / 4)); 输出:0 我调试了它,编译器将1/4视为0: 据我所知,编译器将1/4视为int。但是为什么呢 注意:当我写这行时: Console.WriteLine((double)(1 / 4))); Console.WriteLine((double)1 / 4)); 它输出:0.25,因为1和4都是ints。编译器没有理由进行类型转换

我有一句话:

Console.WriteLine((double)(1 / 4)));
Console.WriteLine((double)1 / 4));
输出:
0

我调试了它,编译器将
1/4
视为0:

据我所知,编译器将
1/4
视为
int
。但是为什么呢


注意:当我写这行时:

Console.WriteLine((double)(1 / 4)));
Console.WriteLine((double)1 / 4));

它输出:
0.25
,因为
1
4
都是
int
s。编译器没有理由进行类型转换。运行此示例并查看输出:

int x = 1, y = 4;

Console.WriteLine(x / y);

double xx = 1;
Console.WriteLine(xx / y);

double yy = 4;
Console.WriteLine(x / yy);

因为
1
4
都是
int
s。编译器没有理由进行类型转换。运行此示例并查看输出:

int x = 1, y = 4;

Console.WriteLine(x / y);

double xx = 1;
Console.WriteLine(xx / y);

double yy = 4;
Console.WriteLine(x / yy);

如果将
int
除以
int
,得到的结果是
int

如果希望得到一个
double
,则至少需要一个
double
参数。 指定双精度的一个简单方法是在数字后设置
.0

Console.WriteLine(1 / 4.0);
Console.WriteLine(1.0 / 4);

如果将
int
除以
int
得到的结果是
int
,则这将被解释为
double

如果希望得到一个
double
,则至少需要一个
double
参数。 指定双精度的一个简单方法是在数字后设置
.0

Console.WriteLine(1 / 4.0);
Console.WriteLine(1.0 / 4);

当您将两个整数除法时,这将被解释为
double

,结果是一个整数。没有任何限定符的数字都是文字整数。带小数但不带任何限定符的数字是文字双精度数。当您将两个整数除法时,结果是整数。没有任何限定符的数字是文字整数。带小数但不带任何限定符的数字是字面上的双精度数。这就是第二行起作用的原因?因为我将
1
转换为
double
,并且
double
除以
int
,这就是第二行工作的原因?因为我将
1
转换为
double
,并且
double
除以
int
,是一个double吗?