!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) 这种形式

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

上一篇:科幻大片中那些牛X代码真相


下一篇:字符集--获取中文拼音