首页 > 代码库 > c语言不寻常的类型转换(类型提升)
c语言不寻常的类型转换(类型提升)
对于一下代码:
printf("%d",sizeof(‘A‘));
你确定他打印的是1吗?
运行之后发现结果是 4 !
C语言 类型转换比一般人想像的还要多,在涉及小于int 和 double 的表达式中 , 都有可能出现类型转换!
根据提升规则:它由char 转换成为 int 。这个特性叫做类型提升 !
char c1,c2; ........... c1=c1+c2;
下表给出了常见的类型提升的列表:
char -------------------------> int
枚举(enum) -------------------------> int
unsigned char-------------------------> int
short-------------------------> int
unsigned short -------------------------> int
位段(bit-filed)-------------------------> int
float -------------------------> double
‘整型提升‘,要求抽象机器把每个变量提升为int长度,然后对 两个 int 进行 加 运算,然后再对 结果进行裁剪。若两个char 的加法结果不会发生溢出异常,
那么实际执行只需要产生char 类型的运算结果,可以省略类型提升!
类似:
在:
float f1,f2; double d; f1=f2*d;
若编译器确定用float 进行运算的结果与转换成double 的一样,那么也可以使用float 进行乘法运算!
隐士类型转换 是语言中的一种临机手段 ,起源于简化最初编辑器的想法。
c语言不寻常的类型转换(类型提升)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。