关于char 于int型的数据转换

[复制链接]
查看11 | 回复3 | 2010-2-2 17:57:35 | 显示全部楼层 |阅读模式
第一个问题是这样的,intm = (unsigned int)(k);你先定义int m,再转换就可以了,不然相当于变成无符号,然后又成了有符号了,也就是int m;m = (unsigned int)(k);第二个问题,两个负数相加时,符号位参与了运算,不变成了0了吗?是变成了0,但是你会发现后面的会进位上来变成1的,不信,你自己可以用-1加上-2看看
回复

使用道具 举报

千问 | 2010-2-2 17:57:35 | 显示全部楼层
C++的IO流处理32位整数默认不会按无符号数输出试试printf("%u\n",m)大部分CPU计算补码加法是用双符号位 PS。有兴趣你就看吧http://home.att.net/~jackklein/c/inttypes.html
回复

使用道具 举报

千问 | 2010-2-2 17:57:35 | 显示全部楼层
这里-1被记做了0xffffffff,那么读出来之后仍然是-1,而你打印的时候用的是“k”的整型表示m,表示你希望用int型变量打出这个数据,那么当然就会打出-1了。
回复

使用道具 举报

千问 | 2010-2-2 17:57:35 | 显示全部楼层
自己查看一下内存就知道了,-1都可以理解对不!ff ff ff ff。由于第二次是short,所以是两个字节,而m是int,4个字节,所以内存中式ff ff 00 00,于是就是65535了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行