请问为什么结果是5,8,8呢?x不小于z,不符合if,为什么值改变了?

#include<stdio.h>

int main()
{
int x=2,y=8,z=5;
if(x>z)
y=x;x=z;z=y;
printf("%d %d %d\n",x,y,z);
return 0;
}

if不加{}的话默认执行后一条语句,y=x;后面有;号,意思是条件成立执行y=x;后面和if无关正确写法是

#include<stdio.h>

int main()
{
int x=2,y=8,z=5;
if(x>z){
y=x;x=z;z=y;
}

printf("%d %d %d\n",x,y,z);
return 0;
}

if括号里面有多条语句要加分号,你这样的话后面两条也会执行