!(a==b&&c==d)
这条件如果把"!"去掉后的等价条件应该是怎么样的,a!=b||c!=d,这样正确吗
晕死了,这应该是小学数学就教过了吧,脸红ing...

解决方案 »

  1.   

    lz的表达可能有点问题。
    应该是“这条件如果把"!"去掉后不用外面的!的等价条件应该是怎么样的”!(a==b&&c==d) <==> a!=b||c!=d
    应该可以认为是对的。但是如果abcd代表的不是一个变量/常量,而是一个表达式/函数,特别是有副作用的表达式/函数,它们就是不等价的。比如
    !(i == 1 && j++ == 2)

    i != 1 || j++ != 2
    布尔表达式结果一致,但是运行后j的值不一致
      

  2.   

    !(a==b&&c==d)  等价  a != b  || c != b
      

  3.   

    德·摩根定律告诉我们:    非(P 且 Q)=(非 P)或(非 Q)
        非(P 或 Q)=(非 P)且(非 Q)http://zh.wikipedia.org/zh-sg/%E5%BE%B7%C2%B7%E6%91%A9%E6%A0%B9%E5%AE%9A%E5%BE%8B译成 Java 表达式为:!(p && q) == !p || !q
    !(p || q) == !p && !q