-2 c if-statement relational-operators
#include<stdio.h>
int main()
{
int n=2500;
if(0<n<1000){
printf("no\n");
}
else{
printf("yes\n");
}
int x=2500;
if(n>0 && n<1000){
printf("no\n");
}
else{
printf("yes\n");
}
}
Run Code Online (Sandbox Code Playgroud)
n 的 if-else 应该打印“是”
但输出是“否”
为什么0<n<1000不起作用
这个表达式并不像你想象的那样:
0<n<1000
Run Code Online (Sandbox Code Playgroud)
C 运算符没有“之间”的概念。上面实际上解析为:
(0<n)<1000
Run Code Online (Sandbox Code Playgroud)
因此,首先会0<n进行评估,结果为 0 或 1。然后将检查结果与 1000 进行比较,即其中一个0<1000或1<1000两个为真,因此条件将始终为真。
您需要将比较分开,如下所示:
if (0<n && n<1000) {
Run Code Online (Sandbox Code Playgroud)