类型的转换

在进行大的转小的的时候会发生截断,将高位字节去掉,剩下的内容存放在小内存里

例如:int 型转char型,只会保留低地址的一个字节,高地址的三个字节被舍弃

例题:char a='1';char只能保存00000001这八个bite位.

指针类型进行转换时不会舍弃,要注意指针是指向一块内存空间将指针类型进行强转之后只会改变这个指针所指向的内存空间的大小.

例如:int arr[10]=0;    int*p=arr  这个表示p可以代表整个数组并且指向数组arr的首地址,如果进行指针+1操作,p指向的地址会往后移动四个字节.

进行强转short*pp=(short*)arr;此时,pp指向的依然是整个数组,只是在进行pp+1操作后指针向后移动两个字节.

例如:int a=100;   char b=(char)a;(此处进行高位舍弃操作)printf("%x",b);(此处会有小内存转成大内存发生)

b本来一个字节,在%x下进行读取四个字节进行打印16进制位,会补齐三个字节的高位,符号位是什么补什么.,有符号位的转有符号位的按符号位进行补.

如果无符号位的数转有符号位的数,如:char a=128;发生截断后第一个数变成符号位.

有符号位的数转成无符号位的数,结果就是无符号位的数,这种补位直接补零.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值