为什么除法的结果在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吗?