首页
社区
课程
招聘
[求助]关于ASCII码的一些小疑虑
发表于: 2013-10-20 00:07 19615

[求助]关于ASCII码的一些小疑虑

2013-10-20 00:07
19615
在《C++反汇编》这本书里面说到:“整型可以与字符型互相转换,但整数不可以超过ASCII的最大表示范围,因为多余部分将被舍弃”
这里的舍弃是什么意思?是相当于二进制中的右移,还是直接%256。我在DEV C++曾经碰到过这样的问题,使用效果貌似是后者。。。那这个是编译器自己的特别设定,还是一般情况下直接报错。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 200
活跃值: (38)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
记得回答过你的问题,其实这个问题就是c中不同整数类型互相转换的问题,具体直接查一下相关书籍。
2013-10-20 00:10
0
雪    币: 114
活跃值: (72)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
3
舍弃就是 11111111 11111111 11111111 00000000 变成 00000000
2013-10-20 01:48
0
雪    币: 14
活跃值: (88)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
舍高位,存低位,好像是这样,要看类型存储的空间
2013-10-20 08:16
0
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
恩,不过你回答的是另外一个问题,关于常数的问题。。。查阅相关书籍= =。。。去看编译原理么
2013-10-20 10:55
0
雪    币: 200
活跃值: (38)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
其实你自己动手写几个例子,调试一下,不难发现长整形转短整形是直接截断,因为char本身也是整形,至于为什么直接截断还可以给出正确的结果,看整数的表示法2's complement

然后不妨思考当整数在什么范围内的时候,unsigned int转unsigned char能够给出正确的结果,不难发现是0-255,因为高位是0,直接截断不会有影响
2013-10-20 14:23
0
雪    币: 97
活跃值: (141)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
整型转换成字符字符的范围就是ascii码,所以整型不能超过ascii码,否则没有字符与它对应了。
2013-10-20 16:34
0
游客
登录 | 注册 方可回帖
返回
//