提问!这个程序应该怎么样理解

img


提问!这个程序应该怎么样理解,好久了都看不懂,是把谁给谁了,从哪开始看啊

详细标注了---------------------【望采纳】


#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