gyCai 发表于 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,以保持数值不改变.
为什么这样扩展后数值不变?明明就变了啊.
谢谢.

jassy1983 发表于 2004-3-11 12:45

如果你知道机器友,你就知道这二题的答案了!

钥匙 发表于 2004-3-11 18:51

这是因为在机器是用”补码“表示数值的。
signed char说明最高位要表示符号。如果为unsigned char则最高位非符号位。
int 的最高位为符号位。

gyCai 发表于 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.

robby 发表于 2004-3-14 10:45

呵呵,看来钥匙对于计算机的知识很强,偶也自认不如。

gyCai 发表于 2004-3-20 14:39

char:11111110,除掉最高位转换为十进制得到254,而char的范围是-128~127,是否代表这个数在char中从-128数起第254个数?即是最终结果为254-129-127=-2?
页: [1]
查看完整版本: [求助][讨论]关于类型转换......