为什么m是4呢 第一个if时为假 往下为什么还继续执行呢

int m,x=3,y=4,z=5;
if(x>y) m=x;
if(y<z) m=y;
else m=z;
printf("%d",m);

第一个if和第二个if是并列的
如果想要第一个为假,下一个不执行,可以这样

int m,x=3,y=4,z=5;
if(x>y) 
{
m=x;
if(y<z) m=y;
else m=z;
}
printf("%d",m);

将下面的包裹起来

第一个if和第二个if是同等级的,第一个if不管真假,第二个If都要执行的,执行第二个if后结果为 m=y=4

如果有点点帮助,希望点一下下采纳

在第二个if前面加个else啊
int m,x=3,y=4,z=5;
if(x>y) m=x;
else if(y<z) m=y;
else m=z;
printf("%d",m);

你这是三个数中找最小的值吗? 你的第一个if跟第二个if没有关系。

    int m,x=3,y=4,z=1;
    if(x>y)
        if(y>z)
            m = z;
        else
            m = y;
    else if(x > z)
            m = z;
    else
            m = x;
    printf("min=%d\n",m);