C++中if(!(a&&!b)) 这什么意思

如题 就帮助。

if(!(a&&!b))  // 意思是 如果 a 并上 (b 的取反) 为假
// 也就是 (a 为真 且 b 为假 )的 否定

比较复杂哦,用真值表来看

a      b        !b         a && !b       !(a&&!b)

真   真       假          假                 真

真  假        真         真                 假

假  真         假        假                   真

假 假          真           假               真

所以你上面那个 if 原则上也等价于下面这些

if( !a || b)
if( a == false || b == true)

当然了,严格的来说 :我们说等价也不对。

因为 a, b 都可能有附加效应的表达式,而 逻辑运算的短路会让附加效应不等价。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-07
这是个判断语句,!表示逻辑非的意思
这句话的意思是:如果 不是(a不等于0并且b等于0),再说的清楚一点就是如果a等于零或b不等于零,则...本回答被提问者采纳
第2个回答  2013-08-07
!为非
&&为and


a并且非b为假。。。
第3个回答  2013-08-07
if(!(a&&!b))也就是if(!a||b)追问

说明白点好吗

追答

!(a&&!b)即a且非b的反面,即非a或b

第4个回答  推荐于2018-03-13
这是个判断语句,!表示逻辑非的意思
这句话的意思是:如果 不是(a不等于0并且b等于0),再说的清楚一点就是如果a等于零或b不等于零,则...本回答被网友采纳