技术宅,fat-man

增加语言的了解程度可以避免写出愚蠢的代码

导航

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

posted on 2014-01-16 16:04  codestyle  阅读(1863)  评论(0编辑  收藏  举报