首页 > 其他分享 >C语言-float和double的区别。

C语言-float和double的区别。

时间:2022-10-05 17:37:22浏览次数:43  
标签:10 运算 double float C语言 精度

类型      符号位 阶码  尾数  长度
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

标签:10,运算,double,float,C语言,精度
From: https://www.cnblogs.com/030622zfy-/p/16755935.html

相关文章

  • C语言-运算符 sizof与strlen的区别
    1、sizeof是运算符,strlen是C语言标准库函数。2、 strlen 测量的是字符串的实际长度,以’\0’结束,返回结果不包括’\0’。3、而sizeof测量的是字符的分配大小,它的参数可......
  • 初学C语言笔记221005
    realloc调整动态内存开辟空间的大小​int*p1=(int*)malloc(10*sizeof(int));​if(p1==NULL){printf("%s",strerror(errno));}else{*p1=0x12345678;*......
  • c语言第七课
    字符串与字符数组字符数组定义chararray[1000];字符数组初始化chararray[100]={'a','b','c','d'};chararray[100]="abcd";chararray[100]={0}; //但凡为......
  • C语言学习记录3
    #每日美图分享##include<stdio.h>intmain(){inti=1;while(i<=10){if(i==5)continue;printf("%d\n",i);i++;}return0;}该代码的运行结果为:1234而......
  • C语言每日一题——第八天
    第八天小明学习到了数组,同时,在最近的开发中,他发现很多递归运算存在重复计算相同数值的问题。他决定利用数组缓存运算的结果。有一个数组\(a_{n}\),已知\(a_n=a_{n-2}-......
  • 【C语言】循环语句
    ......
  • C语言:沙漏图形
    #include<stdio.h>#include<math.h>main(){inta,b,c,d;for(a=-9;a<=9;a++){for(b=1;b<=19-abs(a);b++)printf("");for......
  • 【C语言_14】快速学会使用字符数组
    1.初始化字符数组#include<stdio.h>intmain(){charstr[20]="helloworld";//charstr[20]={'h','e','l','l','o','w','o','r','l','d'};printf("......
  • C语言学习记录2
    先来晒一晒日落~将三个数值从小到大排列:#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intmain(){intx,y,z,t=0;scanf("%d%d%d",&x,&y,&z);if(x>......
  • C语言变量命名规则
    在定义变量时,变量名可以是字母、数字和下划线的组合。但是也不是随便的组合,要注意以下几个命名规则:1、变量名以英文字母开头;变量名的开头不能是数字,可以由字母或下划线开......