条件评估为有符号或无符号整数?

use*_*104 6 c language-lawyer conditional-statements

例如a > b,我们知道C中的条件导致0或1.如果我们想在表达式中直接使用这个0/ 1值,例如1 - (a > b),我们应该假设它是有符号的或无符号的(因为它可以产生差异)表达式)?标准对此有何看法?

Yu *_*Hao 9

所有关系运算符的结果类型是int:

C11§6.5.8关系运算符

如果指定的关系为真且如果为假,则每个运算符<(小于),>(大于),<=(小于或等于)和>=(大于或等于)将产生.结果是int类型.10

所以类型1 - (a > b)也是int签名类型.


Bat*_*eba 5

标准很明确。所有关系运算符(包括相等和不相等)的计算结果为 0 或 1,它们是int类型。

a > b如果a大于b,则计算为 1,否则为0。

1 - (a > b)因此是一个类型为 的表达式int