!a && !b 和 !(a || b) 的故事

// awk代码,当continue执行时说明书是免费的
if(!(int(use_curr) == 0 || int(use_curr) == 30000)) 
{ 
    continue 
}

这段代码大概是半年前写的,半年后过来读,发现已经不理解这段代码了,虽然理解当contniue执行时意味着书是免费的,但到底是use_curr等于0或30000免费,还是不等于时免费,已经迷糊了!

这里需要进行仔细推导:
0 进入表达式 -> use_curr==0 为真 -> 反转为假 -> continue不执行 -> 收费的 -> 0和30000是收费的,其他为免费

if(int(use_curr) != 0 && int(use_curr) != 30000) 
{ 
    continue 
}

不等于0 和 30000的数进入表达式 -> countinue 执行 -> 免费的 -> 0和30000是收费的,其他为免费


那么看起来 !a && !b 还是要优与 !(a || b) 这种形式

原文地址:https://www.cnblogs.com/code-style/p/3522697.html