我看到这个问题已经被问过了,但是答案有点模糊和无用。好的,我需要使用 "& ^ ~ ! + | >> <<" 来实现一个C语言表达式。
这个表达式需要类似于:a ? b : c
据我所知,表达式需要看起来像:
return (a & b) | (~a & c)
当a = 0时,这个表达式可以工作,因为与b进行and运算将得到零,然后或运算将返回右边的表达式(~a&c)
,这能够工作是因为 ~0会得到所有1,将c与所有1进行and运算将返回c。
然而,当a>0时,这个表达式就不再适用了。能否有人尝试解释一下为什么,或者如何解决这个问题?