c 语言 怎么求出运算结果

int a = 1, b = 2, m = 0, n = 0,k;
k = (n = b > a)||(m = a < b);
printf(“%d,%d\n”,k,m);

(n = b > a) b>a吗?大于,返回1,然后把1赋值给n,n为1.
|| 逻辑或,它的特点是左侧结果为真,右边表达式就不会计算,因此k为真,为1. 而m = a < b这个部分不会计算,m的值不变,为0
所以结果k=1,m=0.

输出: 1,0
n = b>a ==> n=1
m = a<b 不会执行 m = 0