这里的n为什么是1,而不是0啊,是不是只算了前面的m之后就不用算后面的n了啊

来源:百度知道 编辑:UC知道 时间:2024/06/23 12:32:00
#include <stdio.h>
void main()
{
int a=1,b=2,c=3,d=4;int m=1,n=1,f;
f=(m=a>b)&&(n=c>d);
printf("%d,%d,%d\n",m,n,f);

}

是的,f=(m=a>b)&&(n=c>d); 这条句子只要执行m=a>b这一分句就可以得到f的值了,没必要算后面的句子,所以n=1。不信的话你将&&改成||试试,你将会发现此时n也是0了,因为||要把整个句子都算出来。

是不是只算了前面的m之后就不用算后面的n了啊

答:是的

&&后面的部分没有计算。
&&运算符中,如果前面的为0,后面的就不会再计算,因为无论后面的是1还是0,整个表达式的结果都是0。