0

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

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

它不起作用,尽管 file_int 等于 9。

我做错了什么?

谢谢

4

5 回答 5

7

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

你实际上需要:

if(!(file_int % 3)) {
    printf("Hoppity \n");
}
于 2011-12-29T20:51:47.120 回答
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");
}
于 2011-12-29T20:53:02.577 回答
1

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

尝试

if(file_int % 3 == 0) {
    // do stuff
}
于 2011-12-29T20:53:13.007 回答
1

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

于 2011-12-29T20:53:04.350 回答
0

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

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

于 2011-12-29T20:53:46.003 回答