不同类型变量赋值的讨论
来源:互联网 发布:香港移动网络制式 编辑:程序博客网 时间:2024/05/21 18:46
摘自《当胸生层云:C语言开发修行实录》
50页对赋值运算符(=)两端为不同类型的变量之间赋值时的情况做了一个总结,现摘录如下:
具体规则如下:
(1)整形赋予实型:数值不变,但将以浮点形式存放,即增加小数点部分(小数部分的值为0)。这个好理解。
(2)实型赋予整型:要舍去小数部分。
(3)字符型赋予整型:因为字符型为一个字节,而整型为两个字节,所以要将字符的ADCII码放到整型量的低八位中,高八位为0.
整型赋予字符型,只把低八位赋予字符量。具体来说有如下两种情况。
1.如果所用系统将字符处理为无符号的量或对unsigned char型变量赋值,则将字符数据的8位放到整型的低8位中,高8位补0;
2.若所用系统(turbo c)将字符处理为带符号的(即signed char),若字符最高位为0,则整型变量最高8为补0;若字符最高位为1,则
最高8位补1.这称为“符号扩展”,这样做的目的是使数值保持不变。意思是负数以补码的方式存储。
(4)float型数据赋给Double型数据时:数值不变,有效位扩展到16位。
(5)将一个int、short、long型数据赋给一个char型变量:只将其低8位原封不动的送到char型变量(截断)。
(6)double型数据赋值为float型数据:只截取其前面的7位有效数字,存放在float变量的存储单元中,但是数值不能溢出。否则产生溢出错误。
(7)将unsigned int型数据赋给long int型变量:不存在符号扩展问题,只需将高位补0即可。
(8)将带符号的整型数据(int型)赋给long型变量时:要进行符号扩展,与(3)2类似。
(9)将一个unsigned类型数据赋给一个占字节数相同的整型变量,例如:unsigned int=》int,unsigned long=》long,unsigned short=》short;将unsigned
型变量原样送到非unsigned型变量中,但如果数据范围超过响应的整型范围,则为出现数据错误。
(10)将非unsigned型数据赋给长度相同的unsigned类型变量:也是原样照赋,连原有的符号位也做为数值一起传送。
- 不同类型变量赋值的讨论
- C++不同类型数值变量之间相互赋值的规则
- 不同类型的变量相加
- 不同类型变量的数据长度
- 【博客大赛】VHDL中信号与变量的区别及赋值的讨论
- VHDL中信号与变量的区别及赋值的讨论
- 不同类型变量的字节数说明
- 不同类型的变量所占空间
- 对话框控件不同类型成员变量的绑定。
- 不同类型变量的内存分配模型
- 深入浅出SharePoint—对不同类型的字段进行赋值
- 从赋值操作理解不同类型的函数传参
- C语言中不同类型数据之间的赋值
- C#变量的赋值
- shell 变量的赋值
- 变量的引用赋值
- public变量的赋值
- 变量的解构赋值
- 数组和指针小结
- serverlet学习
- DHCP协议和dhcpcd源码分析
- 【算法】回溯法实现0-1背包【原创技术】
- PHP 类中定义常量,并对常量的使用方法(转帖)
- 不同类型变量赋值的讨论
- ulipad找不到python解释器
- C++成员函数,非成员函数,友元函数,隐式类类型转换
- SQL 方面专家
- NYOJ 540 奇怪的排序(字符串)
- Ubuntu下以USB调试方式链接Android手机
- sqlserver 连接字符串
- C语言把printf中的数据存入txt文档
- QueryRunner类的主要方法