C语言函数问题,不懂结果为什么是0

一个分段函数的C语言问题,我想问一下为什么无论x我输入多少,得出来的结果都是0,希望有人解答一下我的疑惑,顺便帮我指正,谢谢了

img

(1)把x和y改成float类型, float x,y;
(2)^符号在C语言中是亦或运算,不是求幂,需要用pow函数
pow((x-3),2);
(3)1/2改成 1.0/2
完整代码:

#include <stdio.h>
#include <math.h>
int main()
{
    float x, y;
    printf("please input x:");
    scanf("%f", &x);
    if (x < 2)
        y = -x + 2.5;
    else if (x >= 4)
        y = (1.0 / 2) * x - 1.5;
    else
        y = pow((x - 3), 2) * (-1.5) + 2;
    printf("y=%f", y);
    return 0;
}

int x,y; 改成 double x,y;

(x-3)^2改成pow(x-3,2)或者(x-3)*(x-3)

改成pow(x-3,2)的话,加一个 #include <math.h>

搞成double x,y;
因为int类型和double不一样,不能混着用,有小数就用double

因为整数不保留小数