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