请问最后输出的z值为什么不是10?

问题遇到的现象和发生背景

运行的z值为什么是2,不是10?

问题相关代码,请勿粘贴截图
#include <stdio.h>
void main()
{
int x=3,y=4,z=2,i;
i = x<!y && (z = 10)>y;
printf("i=%d z=%d",i,z);
return 0;
}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

int x=3,y=4,z=2,i;
z=2呀
为什么是10