计组 | 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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部