概述
类型转换
类型转换分为强制类型转换和隐藏类型转换,不管是哪种转换,其实结果都是一样的,即从一种
类型转换成另外一种类型。
(1)一种类型和对应的无符号类型的转换仅仅是内存拷贝
比如:
int <--->unsigned int
char<--->unsigned char
(2)数值表示范围大的类型转换为表示范围小的类型的转换
比如:
int--->char 如int i=0xff31转换为char类型就成为char c=0x31
仅仅是低位内存的拷贝。
但是对于浮点来说,情况有所不同。
float,double转换为int时,如果没出现溢出,将把整数部分转换为整型,
比如:3.33转换为整型就是3。如果溢出的话,正溢出将是整型(或无符号整形)最小值,
负溢出将是最大值。
(3)数值表示范围小的类型转换为表示范围大的类型的转换
char--->int时,仅仅是内存的拷贝
int--->float时,因为IEEE754中定义的float类型符号位1位,尾数23位,如果int中的有效位数
大于23位的时候,可能会出现误差。
double--->float时,当不溢出时,只会存在精度上的误差,溢出的时候如果是上溢出。则为inf,下溢出则为-inf.
注意:在实际应用中,最好不要用隐式类型转换,比如
float f=3/2;跟float f=(float)3/2是不同的,
前者是3/2运算后得1,然后把1转换为浮点类型,而后者是把3跟2看做浮点类型来运算。
最后
以上就是整齐乌冬面为你收集整理的linux下的类型转换的全部内容,希望文章能够帮你解决linux下的类型转换所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复