C语言运算符有关问题
C语言运算符问题
#include<stdio.h>
void main()
{
int a=5,b=6,c=7,d=8,m=2,n=2;
(m=a>b)&&(n=c>d) ;
printf("m=%d n=%d",m,n);
}
为什么结果是0和2
------解决方案--------------------
短路求值 a && b; 如a为false则不计算b
因为a > b 为假,所以 表达式(m = a > b)为0, m = 0
所以 (n = c > d)未执行。 所以n没有变,还是2
#include<stdio.h>
void main()
{
int a=5,b=6,c=7,d=8,m=2,n=2;
(m=a>b)&&(n=c>d) ;
printf("m=%d n=%d",m,n);
}
为什么结果是0和2
------解决方案--------------------
短路求值 a && b; 如a为false则不计算b
因为a > b 为假,所以 表达式(m = a > b)为0, m = 0
所以 (n = c > d)未执行。 所以n没有变,还是2