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了吗 ||和&&运算是这样的:首先,||只要有一个1,那这个条件就成立;&&是只要有一个0,那么这个条件就不成立。
那么c有一套规则:如果||前的第一个判断条件成立,就意味着这个已经成立了,所以它对后一个条件不做运算!不做运算!不做运算!只有当前一个条件判断为0,才会做后一个条件运算!&& 楼主可以类比! 逻辑短路,当或运算左边为真时右边被无情的忽略
页:
[1]