我认为
if( newItem.ReceiptNo != 0 && newItem.ReceiptYear != 0 && newItem.SR != 0)
和
if( ! ( newItem.ReceiptNo == 0 && newItem.ReceiptYear == 0 && newItem.SR == 0))
应该是一样的。但我在android上没有得到相同的结果
答案 0 :(得分:1)
逻辑无法正常工作。
if( newItem.ReceiptNo != 0 && newItem.ReceiptYear != 0 && newItem.SR != 0)
与
相同if( ! ( newItem.ReceiptNo == 0 || newItem.ReceiptYear == 0 || newItem.SR == 0))
请注意||
而不是&&
。
另请参阅:De Morgan's Laws
答案 1 :(得分:0)
如果
,你就错了,对你的第二个进行否定if (newItem.ReceiptNo != 0 || newItem.ReceiptYear != 0 || newItem.SR != 0)
请记住,and
的否定是or
。
答案 2 :(得分:0)
声明1
if(newItem.ReceiptNo != 0 && newItem.ReceiptYear != 0 && newItem.SR != 0)
这意味着所有3不应为零
声明2
if( !(newItem.ReceiptNo == 0 && newItem.ReceiptYear == 0 && newItem.SR == 0))
第一个
newItem.ReceiptNo == 0 && newItem.ReceiptYear == 0 && newItem.SR == 0
表示所有3都应该为零而不是这意味着3中的任何一个都不应为零
对此进行相同更改
if( !(newItem.ReceiptNo == 0 || newItem.ReceiptYear == 0 || newItem.SR == 0))
例如
a != b is equal to !(a=b)
(a != b && a != c) is equal to !(a=b || a=c)
(a != b || a != c) is equal to !(a=b && a=c)
每当!操作员出来并应用某些操作的结果时,它将恢复所有操作,如&&将转换为||和||将转换为&&。
答案 3 :(得分:0)
即使有明显的差异,我认为编译器足够聪明,可以关注这些事情。所以我的建议是使用使代码更容易理解的内容,并将微优化保留给编译器。
请参阅:Is the inequality operator faster than the equality operator?