工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 1486|回复: 6

[求助][讨论]关于类型转换......

[复制链接]
发表于 2004-3-11 10:48 | 显示全部楼层 |阅读模式
有以下两个问题不理解:
1.将字符型数据赋给整型变量时,如果系统将字符处理为signed char,若字符最高位为0,则整型变量高8位补0;若字符型最高位为1,则高8位补1,这样是为了使数值保持不变.
2.将带符号的int型数据赋给long型变量,要进行符号扩展,将int型的16位送到long的低16位中,如果int为正值,则long型高16位补0;若int为负值,则long型高16位补1,以保持数值不改变.
为什么这样扩展后数值不变?明明就变了啊.
谢谢.
发表于 2004-3-11 12:45 | 显示全部楼层
如果你知道机器友,你就知道这二题的答案了!
回复

使用道具 举报

发表于 2004-3-11 18:51 | 显示全部楼层
这是因为在机器是用”补码“表示数值的。
signed char说明最高位要表示符号。如果为unsigned char则最高位非符号位。
int 的最高位为符号位。
回复

使用道具 举报

 楼主| 发表于 2004-3-12 20:12 | 显示全部楼层
这我知道啊,问题是,怎么算?例如,'\376'赋int的结果是什么?那个-2是怎么算出来的?

[ Last edited by gyCai on 2004-3-12 at 08:14 PM ]
回复

使用道具 举报

发表于 2004-3-13 19:18 | 显示全部楼层
'\376'
char:11111110:-2。
unsigned char:254

赋值给int时,从char转变为int。所以是-2.
回复

使用道具 举报

发表于 2004-3-14 10:45 | 显示全部楼层
呵呵,看来钥匙对于计算机的知识很强,偶也自认不如。
回复

使用道具 举报

 楼主| 发表于 2004-3-20 14:39 | 显示全部楼层
char:11111110,除掉最高位转换为十进制得到254,而char的范围是-128~127,是否代表这个数在char中从-128数起第254个数?即是最终结果为254-129-127=-2?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2024-5-15 14:26

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表