当 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 / 5i ∈ {0, 1, 2, 3, 4} 时给出 0,在 i = 5.

时给出 1

if 语句在其条件表达式为 true 时执行条件语句(在本例中为 continue 语句)。整数值按如下方式转换为布尔值:零变为 false,任何其他值变为 true。由于表达式直到 i==5 才计算为非零值,直到那时才执行条件语句。

只要你有

if ( expr )

expr 显然不是 true/false 的东西,你总是可以这样想:

if( (expr) != 0)

因此,如果 expr 的计算结果为小数,那么,只要小数不等于 0,条件就会计算为真。

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