WTS123456 发表于 2018-3-12 10:48:23

M,N值的问题

        int   m,n,a,b,c,d;
        m=n=a=b=c=d=1;
       
        printf("%d\n",(m=a==b)||(n=a<b));
        printf("%d\n",m);
        printf("%d\n",n);


        为什么最后结果是m和n都是1,上面n不是赋值为0了吗

夜猫子侠客 发表于 2018-3-12 10:54:55

||和&&运算是这样的:首先,||只要有一个1,那这个条件就成立;&&是只要有一个0,那么这个条件就不成立。
那么c有一套规则:如果||前的第一个判断条件成立,就意味着这个已经成立了,所以它对后一个条件不做运算!不做运算!不做运算!只有当前一个条件判断为0,才会做后一个条件运算!&& 楼主可以类比!

BngThea 发表于 2018-3-12 10:59:31

逻辑短路,当或运算左边为真时右边被无情的忽略
页: [1]
查看完整版本: M,N值的问题