关于取反的 疑惑

2019-08-13 23:30发布

      u8 t1,t2;
        u32 remote_rec;
        t1=(u8)(remote_rec>>24);       
        t2=~(u8)(remote_rec>>16)&(0xff);       
        if(t1==t2)

       u32 remote_rec;
        t1=(u8)(remote_rec>>24);       
        t2=(u8)(remote_rec>>16)&(0xff);
        if(t1==~t2)
的区别,下面的那个if不成立,加()也不行,请指导下 为什么?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
kmmyk
1楼-- · 2019-08-14 00:19
虽然你的t2是8位数据,但~t2在内存里不一定是8位。
所以,正确的做法是:
if(t1==(u8)~t2)
你试试看。
王建峰
2楼-- · 2019-08-14 03:55
感觉没啥区别啊
lucky邪神
3楼-- · 2019-08-14 07:06
kmmyk 发表于 2017-9-19 22:56
虽然你的t2是8位数据,但~t2在内存里不一定是8位。
所以,正确的做法是:
if(t1==(u8)~t2)

~不是按位取反吗,为什么会改变数据位数呢, 这种处理方式是经验得来的 吗
BMN李
4楼-- · 2019-08-14 08:21
 精彩回答 2  元偷偷看……
kmmyk
5楼-- · 2019-08-14 12:20
lucky邪神 发表于 2017-9-20 09:50
~不是按位取反吗,为什么会改变数据位数呢, 这种处理方式是经验得来的 吗

这个与编译有关了,我曾经被这个坑过,所以也算经验吧。
lucky邪神
6楼-- · 2019-08-14 16:29
kmmyk 发表于 2017-9-20 11:54
这个与编译有关了,我曾经被这个坑过,所以也算经验吧。

谢谢!我也掉这个坑了!长记性 了

一周热门 更多>