if else语句的理解,正如前文分析的那样,if和else语句地位是完全等同,具有对称性,同时也是互斥的,if可以是else. else也可以是if. 但二者不能同时执行。
以while循环里套if-else语句来进行分析
a>b,至少连续10次,则output置1;
否则output 置0;
int i=0,j=0;
int output;
int a,b;
while(1)
{
a = rand()%100;
b = rand()%100;
if(a>=b)
{
i++;//计数器
if(i>=10)
{
output = 1;//条件满足要求,输出告警信号
i = 10;//避免条件成立,i持续变大至越限
}
}else{
output = 0;//条件不满足要求,取消告警信号
i = 0;//计数器清零,使if中可以重新计数。
}
}
如上所示,if(a>b),i开始计数,当i为10的时候,output=1;
小结:if中连续满足条件计数器++,当条件不满足时else中对计数器=0清零。
实际过程中,a>=b,连续10个数,则输出报警信号output = 1;
a<b,(为了起到保护作用,防止数据抖动出现错误,要求连续5个数,而不是仅仅1个数),则取消报警信号output = 0;
上述程序更改如下:
int i=0,j=0;
int output;
int a,b;
while(1)
{
a = rand()%100;
b = rand()%100;
if(a>=b)
{
i++;
if(i>=10)
{
output = 1;
i = 10;//避免条件成立,i持续变大至越限
j = 0;
}
}else{
j++;
if(j>=5)
{
output = 0;
j = 5;//避免条件成立,j持续变大至越限
i = 0;
}
}
}
如上所示,if-else中的代码是完全对称的,所以对于else中要求连续5个数满足条件,如果条件不满足在if中对计数器j进行清零操作。即:if中对else中计数器清零;else对if中计数器清零。