c - 测试一个数是否能整成 6?

标签 c modulo

我想看看两个输入数字(整数)(包括负数)是否均匀地进入 6(余数为 0)。这是我正在尝试的代码。

if((in1)%6 == 0 && (in2)%6 == 0){
    printf("Divisible: both\n");
}
else if((in1)%6 == 0 && (in2)%6 > 0){
    printf("Divisible: only %i\n",in1);
}
else if((in1)%6 > 0 && (in2)%6 == 0){
    printf("Divisible: only %i\n",in2);
}
else{
    printf("Divisible: neither\n");}

这适用于所有正整数,但对于任何负数,打印的代码始终是“可整除:都不是”,任何关于如何显示可被 6 整除且余数为 0 的正数和负数的任何帮助都会非常有帮助

最佳答案

您可以使用!= 0 代替> 0。在 C 中,负数的 % 将给出负结果(或零)。

这是因为自 C99 以来 a/b 被定义为向零截断(在 C90 中它是实现定义的)。并且a % b被定义为a - (a/b) * b

请注意,您实际上根本不需要此测试;如果满足 if 情况,您可以依赖 if...else 的行为,不会进入 else 情况,例如:

if ( in1 % 6 == 0 && in2 % 6 == 0 )
{
    // ...
}
else if ( in1 % 6 == 0 )   
{
    // would not reach here if in2 % 6 == 0
}
else if ( in2 % 6 == 0 )
{
    // would not reach here if in1 % 6 == 0
}
else

关于c - 测试一个数是否能整成 6?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42477115/

相关文章:

rust - 如何在 ARM 嵌入式 Rust 中使用更少的内存进行取模

mysql - 从 mysql 表中选择每隔一行作为男性/女性

c++ - 使用 C/C++ 加密数据 block ,平台无关

检查无符号是否小于零

c - 帮助提示和存储信息

sql-server - SQL Server Modulo 函数似乎返回超出预期范围的值

c# - 从 C# 代码使用 C 库

c - 适用于 Linux 的 Sun Studio 12 C 编译器太慢了

python - 使用 mod 替换 if else 语句

c++ - 在 C/C++ 中使用 % (模数)有什么替代方法吗?