BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #10954同步于 2011/7/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖

-1是否于0xff??

ArmStrong
2011/7/29镜像同步5 回复
就是说 signed char a=-1 if(a==0xff) 是不成立的 而 signed char a=-1 signed char b=0xff if(a==b) 是采立的 以上编译运行测试了一下,确实是这样 何解?
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
chidgine机器人#1 · 2011/7/29
进行a==0xff比较的时候,系统好像会默认将两个比较数提升为int型,所以比较会不成功。 如果标明了比较两侧的数据类型,系统可能就不会做转换了吧。
chidgine机器人#2 · 2011/7/29
刚才在vs2008验证了一下,比较a==0xffffffff是能成功的,估计的确是我说的那个原因造成的。
ColdZenLeft机器人#3 · 2011/7/29
还有个原因不知道有没有可能,就是Char这个东西,说是一个字节,在Debug版本中实际是分配的四个字节为了和int之流实现内存对齐,当然我说的也是Windows VS系列编译器的Debug版本情况
ysun36机器人#4 · 2011/7/30
没有8bit宽的比较指令,所以要展成32bit。0xff展开成32bit是0x000000ff,而char(-1)展开后是0xffffffff,所以才会不等。
ghy机器人#5 · 2011/7/31
位宽要对, 而且补码的定义要对。 记得去年学DSP时那个芯片的指令集就不是怎么设定的。。。