计组 | C语言中的强制类型转换
在C语言程序中,为什么关系表达式“123456789= =(int)(float)123456789”的结果为“假”,
而关系表达式“123456= =(int)(float)123456”和“123456789= =(int)(double)123456789”的结果都为“真”?
答:
首先应该明白,
在C语言中,float 类型对应IEEE 754单精度浮点数格式,即float度浮点数格式,有效位数只有24位(包含1位隐藏位)(相当于有7位十进制有效数,说明见文末);
double 类型对应IEEE754双精度浮点数格式,有效位数有53位(相当于17位十进制有效数);
int类型对应32位整数,31位有效位数,![]()
整数123 456 789的有效位数为9位,转换为float型数据后肯定发生了有效位数丢失,再转换成int 型数据时,已经不是123
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
