Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
布尔运算的结果是否保证为 1 或 0?
我正在编写一个微控制器,需要将一个引脚设置为 1 或 0,并且想知道我是否可以缩短代码:
isRunning = isStarted && !isSleeping; _PBH0 = isRunning ? 1 : 0;
对此:
isRunning = isStarted && !isSleeping; _PBH0 = isRunning;
是的,&&运算符(或任何逻辑运算符)的结果是 an int,其值为1or 0。
&&
int
1
0
C11 §6.5.13 逻辑与运算符 如果两个操作数比较不等于,则运算&&符应让步;否则,它会产生. 结果有类型。100int
如果两个操作数比较不等于,则运算&&符应让步;否则,它会产生. 结果有类型。100int
事实上,你可以减少到_PHB0 = (isStarted && !isSleeping);
_PHB0 = (isStarted && !isSleeping);