C语言 数值类型隐式转换的规则.

C语言 数值类型隐式转换的规则.
转为整数:
整数转整数时,将优先存放数据位的低位,溢出的则抛弃.
浮点转整数时,将优先存放数据位的高位(小数点之前的位),小数点后丢弃.
转为浮点数:
浮点转浮点时,将优先存放数据位的高位,溢出的则抛弃.’(高精度转低精度时将会进行四舍五入)
整数转浮点时,将优先存放数据的低位,溢出的则抛弃.
haozixj 1年前 已收到1个回答 举报

ok0200 幼苗

共回答了20个问题采纳率:85% 举报

好这个问题,是一个复杂的问题,只有一个简单的讨论与你的理解.有不同的观点
0X30百度贴吧,寻找我的C / C + +编程知识分享交流.
1,将存储整数到整数优先级的数据有点低,溢出放弃./ /不一定
原因:在这两种情况下字节的整数,把字节整数依赖上小符号或无符号的字节数.例如,下面的代码:
无符号的字符UX = 0x80的;
字符X IT = 128;
INT I = UX; / / x是无符号的char,所以我的价值是128
= X / / X符号的字符,所以i的值-128
性质的符号,用符号扩展的无符号0扩展.
字节的整数大转小字节的整数,根据CPU的存储顺序.你刚才说的Intel平台,它是小端的机器,如:
我这= 0×12345678;
字符X IT = I / /小端机器,其价值为0x78 ,如你所说的,但在大端机器是0X12.
,浮点到整数,将优先考虑高存储的数据位数(小数点前的位数),小数点后丢弃./ /可以设置丢弃方式
原因是:浮点转数整体式的C / C + +直接丢弃小数部分.例如
我;
为(双F = 1.0(2.0-F)> = FLT_EPSILON的F + = 0.1){
= F;
printf的(“第%d n“,I); / /无论你是一个1.0或1.9为整数1
}
但这个被丢弃的规则可以,方法是调用math.h中声明的地板()或ceil(),前者是下游整数,上行链路的整数,换句话说,如1.5地板(1.5),它的值是1
(下行 - 整数),天花板(1.5)为2.0,则这是在上行链路的整个行.
3,浮点转浮点运算,存储的数据位,优先级高,溢出放弃.(高精密低精度四舍五入)
高精度精度低,C / C + +标准没有解释,实施决策,VC + +是圆形的.这种转换,其实是没有意义的,因为数据丢失.
低转高的精度,这直接提高等.
4,整数浮点运算,数据的存储是低优先级,溢出放弃
C / C + +标准并没有解释,实施决策.

1年前

2
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.022 s. - webmaster@yulucn.com