天天看点

if-else语句理解

 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中计数器清零。

继续阅读