条件表达式总是在C中评估为0或1吗?

pyt*_*nic 5 c logical-operators semantics

条件表达式,例如涉及&&||的表达式 ,他们总是评价为0或1吗?或者对于真实情况,1以外的数字是可能的吗?我问,因为我想分配一个像这样的变量.

int a = cond1 && cond2;
Run Code Online (Sandbox Code Playgroud)

我想知道我是否应该做以下事情.

int a = (cond1 && cond2)? 1:0;
Run Code Online (Sandbox Code Playgroud)

Jam*_*lis 14

逻辑运算符(&&,||!)都计算为1或者0.

C99§6.5.13/ 3:

&&运营商将产生1,如果两个操作数的比较不等于0; 否则,它会产生0.结果有类型int.

C99§6.5.14/ 3:

||运营商将产生1,如果任一操作数的比较不等于0; 否则,它会产生0.结果有类型int.

C99 6.5.3.3/5:

逻辑否定运算符的结果!是,0如果其操作数的值比较等于0,1则其操作数的值不等于0.结果有类型int.表达式!E等价于(0 == E).