若float F= 1.2345;
unsigned int I = (unisigned int)F;
没有问题。
若float F= -1.2345;
即浮点数为负数时,在有些编译器上
unsigned int I = (unisigned int)F;
得到的I为一个错误的数。
正确的转换应该为
unsigned int I = (unisigned int)((int)F);
即先转为有符号的整形,再往无符号整形转换。
若float F= 1.2345;
unsigned int I = (unisigned int)F;
没有问题。
若float F= -1.2345;
即浮点数为负数时,在有些编译器上
unsigned int I = (unisigned int)F;
得到的I为一个错误的数。
正确的转换应该为
unsigned int I = (unisigned int)((int)F);
即先转为有符号的整形,再往无符号整形转换。