当if语句中的条件是小数时

时间:2017-05-29 22:33:43

标签: c if-statement output continue

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语句。

2 个答案:

答案 0 :(得分:6)

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

i / 5会在0时提供i ∈ {0, 1, 2, 3, 4}1时提供i = 5

if语句的条件表达式为continue时,true语句执行条件语句(在本例中为false语句)。整数值按如下方式转换为布尔值:零变为true,任何其他值变为i==5。由于表达式在{{1}}之前不会计算为非零值,因此在此之前不会执行条件语句。

答案 1 :(得分:2)

每当你有

if ( expr )

并且expr显然不是真的/假的,你总能这样想:

if( (expr) != 0)

因此,如果expr评估为分数,那么只要分数不等于0,条件将评估为真。

但是,在您的示例中,由于i是一个整数,i/5将执行整数除法,它将永远不会给出分数。如果i小于5,i/5将为0,最终会使条件为假。