布尔运算的结果是保证为1还是0?
我正在编程一个微控制器并需要将引脚设置为1或0,并且想知道我是否可以缩短代码:
isRunning = isStarted && !isSleeping;
_PBH0 = isRunning ? 1 : 0;
到此:
isRunning = isStarted && !isSleeping;
_PBH0 = isRunning;
答案 0 :(得分:6)
是的,&&
运算符(或任何逻辑运算符)的结果是int
,其值为1
或0
。
C11§6.5.13逻辑AND运算符
如果
&&
运算符的两个操作数都不等于1
,则0
运算符将产生0
;否则,它会产生int
。结果的类型为{{1}}。
答案 1 :(得分:2)
事实上,您可以减少到_PHB0 = (isStarted && !isSleeping);