600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 类型转换——int转换成char(截短)

类型转换——int转换成char(截短)

时间:2019-12-10 03:19:34

相关推荐

类型转换——int转换成char(截短)

转自:/s/blog_70ec9a6f010145wr.html int a,b;//keil c里的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。

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

0000 0000 0000 0000 0001 0010 0011 0100

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

0011 0100

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

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

所以,整个过程并没有改变变量a和b的数据类型,原来是int类型现在还是int型,程序只是修改了变量a的值,连b的值都没有修改,因为修改a的值时只是从b所对应的存储空间里把b的值取出来用一用,用的结果是修改成char类型,但他把修改后的结果放到a所对应的存储空间了,并没有放到b所对应的存储空间,所以原来b所对应的值没有被覆盖,原来是0X1234,现在还是0X1234。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。