【发布时间】:2011-12-29 20:50:29
【问题描述】:
我需要检查 c 中一个数字的整除性。如何使用 C 中的模数运算来检查一个数字是否可以被另一个数字整除?我试过这样做:
if (file_int % 3) {
printf("Hoppity \n");
}
虽然 file_int 等于 9,但它不起作用。
我做错了什么?
谢谢
【问题讨论】:
我需要检查 c 中一个数字的整除性。如何使用 C 中的模数运算来检查一个数字是否可以被另一个数字整除?我试过这样做:
if (file_int % 3) {
printf("Hoppity \n");
}
虽然 file_int 等于 9,但它不起作用。
我做错了什么?
谢谢
【问题讨论】:
它不起作用,因为该操作将返回 0,这将被视为 false。
你实际上需要:
if(!(file_int % 3)) {
printf("Hoppity \n");
}
【讨论】:
false)因此,您可以使用 if (!(num % divisor)) 或 if ((num % divisor) == 0)(基本上将错误结果反转为真实条件。)
file_int % 3 等于file_int % 3 != 0,这是不可分割被3的条件。可分割被3是file_int % 3 == 0,或等同于!(file_int % 3).
&&),而不是逗号运算符。 if (file_int % 5 == 0 && file_int % 3 == 0)
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");
}
【讨论】:
如果取模的结果为0,则可以整除。看起来您正在寻找它不能被 3 整除以继续循环,尽管您的代码 sn-p 不足以自信地假设您的意图。
【讨论】:
因为如果它可以被 3 整除,file_int % 3 将等于 0,并且 if 块不会执行。
试试
if(file_int % 3 == 0) {
// do stuff
}
【讨论】:
mod 运算符返回除法所得的余数...因为 9 可被 3 整除且没有余数,所以返回值为零。
但是,如果非零,条件语句的计算结果为真,如果为零,则为假。您需要将其更改为(file_int % 3 == 0)。
【讨论】: