C语言中不同数值类型之间隐式转换的优先级

先给出结果图,画的不好看别怪

在我的百般测试下得出了这个结果,供大家参考,用的平台是win10 的vs2019,其他编译器不知道,不过我觉得应该都差不多。

所采用的评判两个数值类型之间能不能隐式转换的标准是:两种数值类型的变量之间相互赋值,生成之后看“输出”里面有没有相应的警告信息,比如“warning C4244: “=”: 从“long double”转换到“float”,可能丢失数据”这样的就说明不能隐式转换。

这里来解释一下:
1.short即short int,long即long int;
2.所有的整数型(包括char、short、int和long)分为有符号型和无符号型,有符号型前面加signed,但一般省略,无符号型前加unsigned,不可省略,另外实数型(包括float、double、long double)没有是否有符号的区分。
3.上图一个框框代表一种数值类型,数值类型是以一个数值占用的字节数为区分的(这样的话,long 和int 其实应该放到一个框里面),同一个框中的可以相互转换,即有符号和无符号、long型和非long型之间可以相互隐式转换;
4.箭头表示能够按相应的方向隐式转换而不会有警告;
5.越向下优先级别越高,这里的越高指的是能够隐式转换的方向越少,级别低的可以顺着箭头隐式转换到任何比自己级别高的类型;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值