C语言短路求值
#include<stdio.h>
int main()
{
int m = 2;
int n = 3;
if(m > 0 || (n++) > 0)
printf("%d \n", n);
return 0;
}
输出结果为3。至于为什么输出结果为3,这就涉及到短路计算问题。例如在(m > 0 || (n++) > 0)这个或运算中,m>0为真,那么无论或后面是否为真整个结果都会为真,所以后续的n++就不会执行,n仍为3;同理在与运算中,如果第一个表达式为假,那么与后的表达式是真是假整个结果都是假,后续的表达式也不会执行。