c++中赋值运算符和赋值表达式的读书笔记
赋值过程中的强制类型转换
如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时自动进行类型转换。
(1)将浮点型数据(包括单,双精度)赋给整型变量时,舍弃其小数部分。如i为整型变量,执行“i=3.56”的结果是使i的值为3,在内存中以整数形式存储。
(2)将整型数据赋值给浮点型变量时,数值不变,但以指数形式存储到变量中。如要执行“f=23”,将23赋给float型变量f,按单精度指数形式存储到f中。如要执行“d=23”,即将23赋给double型变量d,则将23以双精度指数形式存储到d中。
(3)将一个double型数据赋给float变量时,要注意数值范围不能溢出。例如,float f; double d=123.456789e100; f=d; 就会出现溢出的错误,因为超过了float型的数据范围(3.4*10e-38~3.4*10e38)。
(4)字符型数据赋给整型变量,将字符的ASCII码赋给整型变量。
(5)将一个int,short或long型数据赋给一个char型变量,只将其低8位原封不动的送到char型变量(发生截断)。!这里写图片描述例如,short int i=289; char c; c=i; //将一个int 型数据赋给一个char型变量赋值情况见下图:为了方便起见,以一个int型数据占两个字节(16位)的情况来说明,一个int型数据占4个字节(32位)的情况与之是类似的。 在变量c的存储单元中存放了00100001,即十进制数33,如果用“cout<
include
using namespace std;
int main(){
unsigned short a;
short int b=-1;
a=b;
cout<<”a=”<