c中的模数运算符

时间:2011-12-29 20:50:30

标签: c++ c math modulus

我需要检查c中数字的可分性。如何在C中使用模数operatpr来检查一个数字是否可以被另一个数字整除?我试过这样做:

if (file_int % 3) {
    printf("Hoppity \n");
}

虽然file_int等于9,但它不起作用。

我做错了什么?

由于

5 个答案:

答案 0 :(得分:7)

它不起作用,因为操作将返回0,将被视为false。

你真的需要:

if(!(file_int % 3)) {
    printf("Hoppity \n");
}

答案 1 :(得分:3)

if (file_int % 3)if (file_int % 3 != 0)相同,这与您想要的相反。

if (file_int % 3 == 0) {
    printf("Hoppity \n");
}
// or
if (!(file_int % 3)) {
    printf("Hoppity \n");
}

答案 2 :(得分:1)

如果模数的结果为0,则它​​是可分的。看起来你正在寻找它不能被3整除以继续循环,尽管你的代码片段不足以自信地假设你的意图。

答案 3 :(得分:1)

因为如果它被3 file_int % 3整除则将等于0,并且if块将不会执行。

尝试

if(file_int % 3 == 0) {
    // do stuff
}

答案 4 :(得分:0)

mod运算符返回除法产生的余数...因为9可以被3整除而没有余数,所以返回值为零。

但是,如果非零,则条件语句的计算结果为true,如果为零则为false。您需要将其更改为(file_int % 3 == 0)