我正在尝试将if语句更改为while语句。
例如
int A=1; if(A==1){};
int A=1 while(A!=1)相似。
我的If语句没有代码,为了避免else-if语句,我只需要它什么也不做。

我的If语句位于1 While语句和1 If语句内。
因此,我希望程序在while语句中执行相同的操作,而不是在1 While语句和1 If语句中使用带If语句的无代码语句。

原始代码是这样的

while(C1)
{
    if(C2)
    {
        if( h->data[temp] < h->data[temp*2] && h->data[temp] < h->data[temp*2+1] )
        {
             break;
        }
        else if(C4)
        {
            DO();
        }

    }
}


我已将其更改为

while( C1 && h->data[temp] > h->data[temp*2] && h->data[temp] > h->data[temp*2+1] )
{
    if(C2)
    {
        if(C4)
        {
            DO();
        }

    }
}


结果是不同的。原始代码给出正确的结果,但更改后的代码给出不正确的结果。我仅将位置更改为if到while,还将运算符。

整个代码看起来好像我花了更少的精力在投票上。所以我发布的代码有点像伪代码。

最佳答案

例如int A = 1; if(A == 1){};类似于int A = 1 while(A!= 1)。


如前所述,您的循环正在中断。上面的陈述也是不正确的。

int a = 1;
if(a == 1) {} //this is true, and will happen once




int a = 1;
while(a != 1) {} //false on entry, skip loop ( never entered )


如果可以隔离条件,也可以考虑使用开关/盒。
这样可以达到删除if的目标,并使代码更具可读性。

例如

int a = 1;
while(a)
{
    switch(a)
    {
        case 1: ++a; continue;
        case 2: do();
        default: break;    //end loop
    }
}

关于c - 将if语句更改为while语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31816152/

10-11 19:42