C语言-float和double的区别。

类型      符号位 阶码  尾数  长度
float           1      8        23    32
double       1     11        52    64

double 和 float 的区别是 double 精度高,有效数字 16 位,float 精度 7 位。但 double 消耗内存是 float 的两倍,double 的运算速度比 float 慢得多,能用单精度时不要用双精度(以省内存,加快运算速度)。

例题:

设变量 a 是整型, f 是实型, i 是双精度型,则表达式 10+ ‘ a ’ +i*f 值的数据类型为( )。

int
float
double
不确定

 答案 C

由于运算符的优先级比+,-的优先级高,而且算术运算是左结合性,所以先做if在C语言中,不同类型的变量在进行算术运算时,float型的变量要无条件的转化为double型。这样f转化为double(双精度型)型并与也为double(双精度型)的i相乘,得到double(双精度型)的值。之后,算10+‘a"。由于’a’为字符型,C语言规则,字符型数据在参加算术运算是要无条件的转化为int(整形)。这样10+’a’就为整型。最后10+'a’的值与if相加。10+‘a’为整型,if为double(双精度型)。由于double(双精度型)比整形高,所以整型变量自动变为double型。两个double(双精度型)的数相加,和仍为double(双精度型)。类型char->int->unsigned->long->double<-float这样转换的原因是为了尽可能的使得到的结果精度高。
一言以蔽之:C语言运算,自动往高精度数据类型转换。

double float选double
int char 选int
int double选double

posted @   zzzfffffff  阅读(752)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示