繁体   English   中英

if语句中的条件为小数时

[英]When condition inside if statement is fractional

void main(void)
{
    int i;
    for(i=1;i<=5;i++)
    {
        if(i/5)
            continue;
        printf("%d",i);
    }
}

我的简单查询是,如果将“ if”中的条件评估为分数,是否将其视为0?这里的输出为1234,所以当条件为1 / 5,2 / 5,3 / 5,4 / 5时它是i的打印值,当5/5 = 1时,它正在执行Continue语句。

i/5将被视为整数除法(当iint当然),无论它出现在( if或其他)。 因此,两个整数之间的/实际上会给您商。

i ∈ {0, 1, 2, 3, 4}i / 5将给出0 i ∈ {0, 1, 2, 3, 4}而当i = 5i ∈ {0, 1, 2, 3, 4}将给出1

if条件语句为trueif语句执行条件语句(在本例中为continue语句)。 如下将整数值转换为布尔值:零变为false ,其他任何值变为true 由于表达式在i==5之前不会求值为非零值,因此直到那时才执行条件语句。

每当你有

if ( expr )

而且expr显然不是对/错的东西,您总可以这样认为:

if( (expr) != 0)

因此,如果expr计算为分数,那么只要分数不等于0,该条件就将计算为true。

但是,在您的示例中,由于i是整数,所以i/5将执行整数除法,该运算将永远不会给出分数。 如果i小于5,则i/5将为0,这将使条件为假。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM