打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
类型转换

int a,b;  //keilc里的int,也就是16位。

a=0000; b=0x1234;

a=(char)(b);

 

int a,b;

这句的功能是操作系统为变量a,b分别分配一块空闲的存储空间。以后使用a,b将相当于访问各自所对应的存储空间。

 

a = 0000;b = Ox1234;

这句的功能是把0000放到变量a所对应的存储空间,把0x1234放到变量b所对应的存储空间。

 

重点是下面这句a =(char)(b)

它的功能相当于修改变量a的值。具体是这样操作的:

b所对应的存储空间中取出b的值即0x1234,然后把他转换成char类型,再然后将转换后的结果放到变量a所对应的存储空间,即覆盖掉原来的0000

这个转换后的结果又是多少呢,是这样算的通常在Cint类型占4个字节  char类型占1个字节如果把一个int类型的数据以char类型输出,那么,编译器会自动丢弃int类型的前3个字节的内容。对应本题int类型的数据b0X1234,为十六进制,在计算机中是这样存储的:

              0000 00000000 0000 0001 0010 0011 0100

4个字节。转换成char类型后,前3个字节丢弃,即结果是

0011 0100 

1个字节,对应的十进制是52

 

当语句a =(char)(b)执行完后,这1个字节的值也就是52就放到了变量a所对应的存储空间,而不是原来的0000了。

 

所以,整个过程并没有改变变量ab的数据类型,原来是int类型现在还是int型,程序只是修改了变量a的值,连b的值都没有修改,因为修改a的值时只是从b所对应的存储空间里把b的值取出来用一用,用的结果是修改成char类型,但他把修改后的结果放到a所对应的存储空间了,并没有放到b所对应的存储空间,所以原来b所对应的值没有被覆盖,原来是0X1234,现在还是0X1234
 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
c语言中指针的总结,不知道大家需不需要
关于char的溢出问题
C语言基础知识:指针
c语言入门20,一文扒开C语言指针神秘的外衣,指针也不过如此嘛
(1)C语言字节对齐(以32位系统为例)
C语言 静态变量与自动变量的区别
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服