详细标注了---------------------【望采纳】
#include <stdio.h>
int main(void) {
int a=1,b=2,m=0,n=0,k; // 定义int类型的 a b m n k
k=(n=b>a)||(m=9);
// 先计算括号(n=b>a) b>a 2>1 true 即n=1
//此时注意 代码是|| || 是逻辑或 一真则真 一假则假 后面的就不执行了
//k 就被(n=b>a) 赋值为 1
// 所以(m=9) 就不再执行 也不会给m赋值 所以m还是第一步定义的 0
printf("%d,%d\n",k,m);
//所以输出 1 0
return 0;
}
m=b>a,就是先判断b>a,然后将结果赋值给m,m的值为0或1
因为b>a成立,所以n=1,由于逻辑或左侧为1,所以k肯定为1,右侧是不运行的,因此m还是0
选C