输入24,应该运行x+10,也就是输出34才对。为啥我这程序出来的是14

#include<stdio.h>
int main()
{float x,y;
scanf("%f",&x);
if(x>=0)
if(0<=x<10) printf("y=%f",x-10);
else printf("y=%f",x+10);
else
printf("y=%f",x);
return 0;}

img

if(0<=x<10)是错误写法----这个代码能通过编译,但执行过程是先判断0<=x是否成立,然后再判断这个表达式的结果是否<10。显然逻辑表达式的结果只有0和1两种结果,自然会小于10,所以if(0<=x<10)肯定成立
应该改为if(x>=0 && x<10)
你的代码前面已经有if(x>=0),所以这里只需要改成 if(x<10)就可以啦

#include<stdio.h>
int main()
{
    float x,y;
    scanf("%f",&x);
    if(x>=0)
        if(x<10) 
            printf("y=%f",x-10);
        else 
            printf("y=%f",x+10);
    else
        printf("y=%f",x);
    return 0;
}

判断不能连续这么写
if(0<=x<10)

img

#include<stdio.h>
int main()
{float x,y;
scanf("%f",&x);
if(x>=0)
if(x<10&&x>=0) printf("y=%f",x-10);
else printf("y=%f",x+10);
else
printf("y=%f",x);
return 0;}

if(x>=0&&x<10)