楼上的错了。
开始还对,定义整型变量I并初始化为289,然后定义字符型变量C,并初始化为字符'A',最后一个错了。ASCII码只有256个,289很明显超出了范围,由于char占一个byte,8bit位,而int一般的机器都是32位,把int型赋给char型,高位(从第9位开始)上的值全被砍掉。289的16进制表示是:(121)_16,所以第三位的1被砍掉,剩下(21)_16赋值给C,查表(21)_16对应的字符是‘!’
汗,还不明白?好,举个简单的例子。你有一个盒子,长8厘米,现在你有一根棍子,长32厘米(宽度跟盒子刚好匹配),现在你想把这根棍子装进这个盒子里面,而且你邮箱保留较细的那一头,你怎么办?只能把从细的这一头开始到8厘米处锯掉。上面的也是一样的道理啊!289是整型,32位, 二进制表示是
0000,0000,0000,0000,0000,0001,0010,0001
现在你要把它放进一个只有8位的“盒子”里面,又必须保留低位,只有把前面的都砍掉,就成了
0010,0001
16进制每4个bit位一组,
0000,0000,0000,0000,0000,0001,0010,0001
用16进制表是不就对应
0 0 0 0 0 1 2 1
把21前面的位数都砍掉,就只剩下(21)_16,就是(00100001)_2,就是一个byte,满足char类型的长度,查ASCII码表,(21)_16(或者(00100001)_2)对应的字符就是'!'
用16进制完全是为了方便,如果你喜欢写那么多0,那我也没意见
~~~~~~~~~
楼主,你可是我见过的最能问的,难怪叫“不懂就问”,精神可嘉,不过我的有求必应更可嘉,多加点分,出手可别太吝啬小气~~~ 呵呵~~~
再不懂,我也没辙了~~~
温馨提示:答案为网友推荐,仅供参考