问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

1.000000如何变成1.00C语言

发布网友 发布时间:2023-02-25 12:11

我来回答

1个回答

热心网友 时间:2024-11-29 20:44

计算机进行算术运算时,要求各操作数的类型具有相同的大小(存储位数)及存储方式,不能将char 型( 1 字节)数据与 int 型(2、4或8字节)数据直接参与运算;由于存储方式的不同,也不能将 int 型数据与 double 型数据直接参与运算。

然而,由于 C语言的灵活性,在一个表达式或一条语句中,允许不同类型的数据混合运算。
C语言的灵活性与计算机的机械性是一对矛盾,如处理不好,将会产生错误结果。对于某些类型的转换编译器可隐式地自动进行,不需程序员干预,称这种转换为自动类型转换;而有些类型转换需要程序员显式指定,这种类型转换称为强制类型转换。
一、自动类型转换
一个表达式中出现不同类型间的混合运算,较低类型将自动向较高类型转换。
不同数据类型之间的差别在于数据的取值范围和精度上,一般情况下,数据的取值范围越大、精度越高,其类型也越“高级”。
整型类型级别从低到高依次为:
signed char->unsigned char->short->unsigned short->int->unsigned int->long->unsigned long
浮点型级别从低到高依次为:
float->double
float浮点类型被我们弃用了,所以不提它了。
1、操作数中没有浮点型数据时
当 char、unsigned char、short 或 unsigned short出现在表达式中参与运算时,一般将其自动转换为 int 类型。
int 与 unsigned int混合运算时,int自动转换为unsigned int型。
int、unsigned int 与 long 混合运算时,均转换为 long 类型。
2、操作数中有浮点型数据时
当操作数中含有浮点型数据时,所有操作数都将转换为 double 型。
例如:
int ii=100;
double dd=200.5;
ii+dd;

上述算术表达式中操作数 dd 为double,所以先把ii转换为double浮点数后再参与运算,运算结果为双精度浮点数300.5。
3、赋值运算符两侧的类型不一致时
当赋值运算符的右值(可能为常量、变量或表达式)类型与左值类型不一致时,将右值类型提升/降低为左值类型。例如:
double dd;
dd=10; // 右值为双精度,左值为整数

由于左值dd为双精度浮点型,所以先把右值整型常量10 提升为双精度浮点型后,再赋值给dd,不但不丢失精度反而提高了精度。
int ii;
ii=10.5; // 右值10.5为双精度,左值为整型

右值双精度型 10.5 降低为左值整型,即10.5舍弃小数部分后,把10 赋给整型变量ii,这种情况会丢失精度。
4、右值超出左值类型范围时
更糟糕的情况是,赋值运算符右值的范围超出了左值类型的表示范围,将把该右值截断后,赋给左值。所得结果可能毫无意义。例如:
char c; // char占8位,取值范围是-128-127。
c=1025; // 整数1025 对应二进制形式是100 0000 0001,超出了8位。
printf("%d",c) ; // 以十进制输出c的值

该输出结果为 1,因为只取 1025 低 8 位 0000 0001(值为1),赋给字符型变量c,得到毫无意义的值。
二、强制类型转换
虽然自动类型转换不需要人工干预,使用方便,但有利也有弊,尤其当自动类型转换是从较高类型转换为较低类型时,将会降低精度或截断数据,可能得不到预期的结果。
为了给程序设计人员提供更多的类型转换控制权限,使程序设计更加灵活,转换的目的更加清晰,C语言提供了可显式指定类型转换的语法,通常称之为强制类型转换。
强制类型转换的格式为:
(目标类型) 表达式;

例如:
int a,b;
a=4;
b=3;
double dd;
dd=a/b; // dd的结果将是1。
dd=(double)(a/b); // dd的结果是1.000000。
dd=(double)a/b; // dd的结果是1.333333

dd=a/b,dd的结果是1,这个很好理解,因为整数除整数还是整数,没有小数部分。
dd=(double)(a/b),dd的结果也是1.000000,这个不好理解,它的运算过程是:
(1)先运算a/b,得到的结果是整数的1;
(2)把整数的1转换成double,是1.000000。
dd=(double)a/b,dd的结果是1.333333,这个也不好理解,它的运算过程是:
(1)先执行(double)a,把a转换为double,即4.000000;
(2)把4.00000除以3,得到1.333333,符合自动类型转换的规则。
这里还有个问题,程序员搞不清楚是(double)a优先还是a/b优先,最好的办法是写成这样((double)a)/b,这样就没有疑问了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
联想Z470AM I5处理器与I3 联想ideapad z470 独显默认设置是什么 联想Z470 I5处理器 GT520M的显卡跟普通的GT520M显卡有什么区别 性能怎 ... 我新买了一台联想z470 i3-2310 但是朋友说显卡不太好!! 我玩天龙八部... 联想的z470笔记本 上面 的独显GT520M 能不能 更换 或者是升级阿? ...我的是双显卡的 z470- i5 显卡是 gt520m 能换吗 vivo手机耳机麦克风说话声音小 耳机通话声音小是怎么回事 为什么我手机耳机的麦克风声音很小怎么调 求:7个字的情侣游戏名,纯汉字,有诗意的(不要古诗)。不带任何符号或英文... php不能自动类型转换的原因 翡翠原石水泡后掉色是什么原因 翡翠原石水泡后掉色是怎么回事 湛、魂、呐、恐、丞、洛、魅、俊笔画从少到多 月杜甫拼音版 高骈,写诗一流,打仗一流,却毁在了修仙上? 莲花还被称为什么 乃依骚人之作,为新辞以教巫视的翻译? 梦见自己准备结婚,但是没有举行,而且没看到新娘!啥意思啊? 什么样的人是窝囊废! 梦见结婚却没有新娘 黄花城水长城游玩要多久 淋雨后喝什么驱寒 求助,这周五要用的成语 武元衡《春兴》的后两句抒发了诗人怎样的感情 春这首古诗 予感夫人物之废兴,惜其可爱而弃也是什么意思? 做梦梦见地塌陷是什么预兆 诸暨有什么特色小吃呢 德州扒鸡是怎样做的? 家庭自制青柠鸡尾酒有哪些做法,步骤有哪些? PHP自动类型转换问题如图 考研心态怎么调整 考研心态如何调整? "成"也暑假"败"也暑假 考研复习心态及计划策略? 考研期间脾气暴躁,看什么都烦 考研复习心态平静最重要 闯缸鱼一般放几条合适(什么时候放闯缸鱼) 带有皑的成语 奥迪a6记录仪黄灯一直亮着 奥迪a6出现黄色圈解释 奥迪a6出现黄色圈是什么意思 奥迪A6仪表盘亮黄灯了什么情况? 投鞭断流的故事出自哪里? 投鞭断流出自哪里啊?? 有竹的象征意义的诗句 与周瑜有关的同时期的历史人物 做梦梦见女傻子是什么征兆 樽俎[zūn zǔ]什么意思?近义词和反义词是什么?英文翻译是什么? 越俎代疱文言文 鹧鸪天·樽俎风流有几人原文|翻译|赏析_原文作者简介 表示追寻的成语