C语言基本内容请教

main(){longa=111111l,p,q,r,s;floatb=1122334455.778899,c=1122334455.112233;doubled=112... main() {long a=111111l,p,q,r,s; float b=1122334455.778899,c=1122334455.112233; double d=1122334455.778899,e=1122334455.112233; p=a+b;q=a+c;r=a+d;s=a+e; printf("p=%ld a+b=%f\n",p,a+b); printf("q=%ld a+c=%f\n",a,a+c); printf("r=%ld a+d=%f\n",r,a+d); printf("s=%ld a+e=%f\n",s,a+e); } 输出以后: p=1122445575 a+b=1122445575.000000 q=1122334475 a+c=1122445575.000000 r=1122445566 a+d=1122445566.778899 s=1122445566 a+e=1122445566.112233 求指教:自动转换原则 展开
 我来答
秋景文奇胜
2019-06-05 · TA获得超过3720个赞
知道大有可为答主
回答量:3150
采纳率:25%
帮助的人:226万
展开全部
转换由编译系统自动完成,可以将一种数据类型的数据转换为另外一种数据类型的数据。
1)算术运算中的数据转换
如果一个运算符有两个不同类型的运算分量,C语言在计算该表达式时会自动转换为同一种数据类型以便进行运算。先将较低类型的数据提升为较高的类型,从而使两者的数据类型一致(但数值不变),然后再进行计算,其结果是较高类型的数据。
自动转换遵循原则——“类型提升”:转换按数据类型提升(由低向高)的方向进行,以保证不降低精度。
数据类型的高低是根据其类型所占空间的大小来判定,占用空间越大,类型越高。反之越低。
例如:算术运算x+y,如果x和y的类型都是int型变量,则x+y的结果自然是int型。如果x是short型而y是int型,则需要首先将x转换为int型,然后再与y进行加法计算,表达式的结果为int型。
2)赋值运算的类型转换
在执行赋值运算时,如果赋值运算符两侧的数据类型不同,赋值号右侧表达式类型的数据将转换为赋值号左侧变量的类型。
转换原则是:当赋值运算符“=”右侧表达式的值被计算出来后,不论是什么类型都一律转换为“=”左侧的变量的类型,然后再赋值给左侧的变量。
例如:float
a;
a=10;
/*结果为a=10.0(数据填充)*/
int
a;
a=15.5
/*
结果为a=15(数据截取)*/
在赋值类型转换时要注意数值的范围不能溢出。既要在该数据类型允许的范围内。如如果右侧变量数据类型长度比左侧的长时,将丢失一部分数据,从而造成数据精度的降低。
3)数据输出时的类型转换
在输出时,数据将转换为格式控制符所要求的类型。同样可能发生数据丢失或溢出。类型转换的实际情况是:字符型到整型是取字符的ASCII码值;整型到字符型只是取其低8位;实型到整型要去掉小数部分;整型到实型数值不变,但以实数形式存放;双精度到实型是四舍五入的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式