在VC++ 6.0的环境下我的程序用到了 if(!(rd&&wr)) 但是结果是当rd 和wr 互为相反的时候也会进入if 语句。
但是当换成 if((rd&&wr)!=0)结果却如预期,无任何异常。其它地方我们有做任何改动,请各位大侠帮我分析下这个很幼稚但是又很诡异的问题 

解决方案 »

  1.   

    不好意思,写错了,&&应该是&
      

  2.   

    if(!(rd&wr))
    --------------
    rd 和wr 互为相反,rd&wr=0,!(rd&wr)则非零,所以进入if语句。if((rd&&wr)!=0)
    -----------------------------------------
    rd 和wr 互为相反,rd&wr=0,0!=0 则非假,当然就不进入if语句。
      

  3.   

    更正:if(!(rd&wr))
    --------------
    rd 和wr 互为相反,rd&wr=0,!(rd&wr)则非零;判断条件为真,所以进入if语句。if((rd&&wr)!=0)
    -----------------------------------------
    rd 和wr 互为相反,rd&wr=0,0!=0 ;判断条件为假,当然就不进入if语句。
      

  4.   

    &&还是&? 用位操作结果做逻辑关系?
      

  5.   

    大侠们,我现在要比较if(!(rd&wr))和if((rd&wr)!=0)
    我也做了一年软件了。&&和&的区别就像老婆和情人,有个时候会混淆的,不好意思啊