C中的复合关系运算符

ami*_*aab -1 c syntax if-statement logical-operators

我试图将一段伪代码转换为C代码,我有条件

if (-4 <= X <=8)
THEN {Do Something}
else
{Do something else}
Run Code Online (Sandbox Code Playgroud)

if语句中的语法是否有效?可以在逻辑条件中将常量放在变量之前以检查真值吗?

tem*_*def 7

在C中,你不能写出类似的条件

if (-4 <= X <= 8) {
     // ...
} else {
     // ...
}
Run Code Online (Sandbox Code Playgroud)

相反,您必须将其拆分为两个单独的检查:

if (-4 <= X && X <= 8) {
     // ...
} else {
     // ...
}
Run Code Online (Sandbox Code Playgroud)

这段代码现在完全正常 - 您可以在<=运营商的任何一侧拥有您想要的任何操作数.

  • 好吧,从技术上讲您可以,但是它并没有达到您(数学上)的期望。这会导致有趣的情况,例如“ 5 &lt;12 &lt;4”为真(“ 5 &lt;12”为真,表示为“ 1”,因此表达式变为“ 1 &lt;4”,也为真)。尝试时,GCC会发出警告。 (2认同)