我试图理解一些数据类型和转换之间的区别。
public static void ExplicitTypeConversion2()
{
long longValue=long.MaxValue;
float floatValue = float.MaxValue;
int integerValue = (int) longValue;
int integerValue2 = (int)floatValue;
Console.WriteLine(integerValue);
Console.WriteLine(integerValue2);
}
当我运行那段代码时,它输出:
当我运行该代码块时,输出如下:
-1
-2147483648
我知道如果你想给一个整数赋的值比它所能保存的要大,它会返回整数的最小值(-2147483648)。
据我所知,long.MaxValue
比一个整数的最大值要大得多,但是如果我将 long.MaxValue
强制转换为 int
,它会返回 -1。
这两种强制转换有什么区别?我认为第一种强制转换也应该返回 -2147483648 而不是 -1。
int i = (int)long.MaxValue
可以将i
填充为0xFFFFFFFF
,即-1
,这对我来说很清楚。但是我想知道为什么int i = (int)float.MaxValue
最终会落在int.MinValue
,即0x80000000
。 - René Vogt