正在发生的是文字本质上是打字的. 0.1
是一个double
,这就是为什么你不能说float f = 0.1
.您可以将 a double
转换为float
(float f = (float)0.1
),但可能会失去精度.同样,文字0xFFFFFFFF本质上是一个uint
.你可以将其转换为一个int
,但是这之后它已被编译为一个解释uint
.编译器不使用您为其分配的变量来确定其类型; 它的类型由它是什么类型的文字定义.
正在发生的是文字本质上是打字的. 0.1
是一个double
,这就是为什么你不能说float f = 0.1
.您可以将 a double
转换为float
(float f = (float)0.1
),但可能会失去精度.同样,文字0xFFFFFFFF本质上是一个uint
.你可以将其转换为一个int
,但是这之后它已被编译为一个解释uint
.编译器不使用您为其分配的变量来确定其类型; 它的类型由它是什么类型的文字定义.