短路现象 1
表达式1 && 表达式2 && 表达式3;
分析:
只有当表达式1为真(⾮0)时才需要判断表达式2的值;只有表达式1和2都为真(⾮零)时;才需要判断表达式3的值。当表达式1为假(0),则发⽣短路,不执⾏表达式2和3,整个表达式值为0!
例如:
#include"stdio.h"
main()
{
int a,b,c,d;
a =0;
b =1;
c =2;
d = a++&& b++&&(++c);
printf("a=%d b=%d c=%d d=%d\n",a,b,c,d);
}
输出结果:
> a=1 b=1 c=2 d=0
- 短路现象 2
表达式1 || 表达式2 || 表达式3;
分析:
只有表达式1为假(0)时才需要判断表达式2的值;只有表达式1和2都为假(0)时,才需要判断表达式3的值。当表达式1为真(⾮0),则发⽣短路,不执⾏表达式2和3,整个表达式值为1!
例如:
#include"stdio.h"
main()
{
int a,b,c,d;
a =0;
b =1;
c =2;
d = a++|| b++||(--c);
printf("a=%d b=%d c=%d d=%d\n",a,b,c,d);
}
输出结果:
> a=1 b=2 c=2 d=1