Chinaunix首页 | 论坛 | 博客
  • 博客访问: 653817
  • 博文数量: 150
  • 博客积分: 4070
  • 博客等级: 中校
  • 技术积分: 1795
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-23 21:44
文章分类

全部博文(150)

文章存档

2012年(1)

2011年(123)

2010年(26)

分类: C/C++

2011-07-04 09:52:36

主要是关于整形(int,short,long),实型(float, double),字符型(char)之间在混合运算和赋值时的转换。
1. 主要转换规则图:
2. 在一个混合运算表达式中,不同类型的数据首先要转换成同一类型,然后再进行运算。根据上图的转换规则,首先字符型和short型的变量首先要转换成int后才参与运算,而float型数据在运算时先转换成双精度。
3. 赋值时的类型转换
(1)将实型数据(单精度和双精度)赋给整形变量时,舍弃实数的小数部分。
(2)将整形数据赋给单精度、双精度变量时,数值不变,但以浮点数形式存储到变量中。
(3)将一个double型数据赋给float变量时,截取前面7位有效数字,存放到float变量的存储单元(32位)中,但同时应注意数值范围不能溢出。
(4)将float型数据赋给double变量时,数值不变,有效位数扩展到16位,在内存中以64位存储。
(5)字符型数据赋给整形变量时,由于字符只占一个字节,而整形变量为2个字节,因此将字符数据(8位)放到整形变量低8位中。
(6)将一个int,short,long型数据赋给一个char型变量时,只将低8位原样不动的送到char型变量。
(7)将带符号的整形数据(int)赋给long型变量时,要进行符号扩展,将整形变量的16位送到long型的低16位中,如果int型数据为正值,则long型变量的高16位补0,如果int型数据为负值,则long型变量的高16位补1。
(8) 将unsigned int型数据赋给long int型变量时,数值不变,只需将高位补0即可。
(9)将非unsigned型数据赋给长度相同的unsigned型变量,也是原样赋值(连同原有的符号位也作为数值一起传送)。
阅读(1015) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~