我想看看两个输入数字(整数)(包括负数)是否均匀地进入 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/