4个布尔变量a b c d,如何用一个表达式得出最多2个为真? C++语言.
比如4个变量 a b c d都是布尔型的,要求一个布尔表达式,如果4个中少于等于2个为真,则返回真值。
换句话说就是一个表达式判断4个布尔变量是否至多有2个真。
谢谢
补充:网上看到一段 result=!((a||b)&&(c||d)&&(d||a)); 但是一直没看懂,哪位上仙给解释解释。。功能对了。
(a ? 1 : 0) + (b ? 1 : 0) + (c ? 1 : 0) + (d ? 1 : 0) <= 2
如果4个中少于等于2个为真,则返回真值。
这句话返过来说就是四个数中有3个或者4个为真则返回假值
!((a||b)&&(c||d)&&(d||a))要返回假值 (a||b)&&(c||d)&&(d||a)就必须是真
也就是 a||b c||d d||a 都必须真 那a和c为真就可以了啊 你这个错了啊
result=!((a||b)&&(c||d)&&(d||a))
这个的意思就是如果
result=1
并且
a,b,c,d都是零
就成立
或者
a,b,c,d都>=1
并且
result=0
就成立