2

布尔运算的结果是否保证为 1 或 0?

我正在编写一个微控制器,需要将一个引脚设置为 1 或 0,并且想知道我是否可以缩短代码:

isRunning = isStarted && !isSleeping;
_PBH0 = isRunning ? 1 : 0;

对此:

isRunning = isStarted && !isSleeping;
_PBH0 = isRunning;
4

2 回答 2

7

是的,&&运算符(或任何逻辑运算符)的结果是 an int,其值为1or 0

C11 §6.5.13 逻辑与运算符

如果两个操作数比较不等于,则运算&&符应让步;否则,它会产生. 结果有类型。100int

于 2013-09-19T08:11:25.503 回答
2

事实上,你可以减少到_PHB0 = (isStarted && !isSleeping);

于 2013-09-19T08:16:58.507 回答