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,0n = b>a ==> n=1m = a<b 不会执行 m = 0