我试图看看包含负数的两个输入数字(整数)是否均匀地进入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 :(得分:5)
您可以使用!= 0
代替> 0
。在C中,负数的%
将给出否定结果(或零)。
这是因为a / b
被定义为自C99以来截断为零(在C90中它是实现定义的)。 a % b
定义为a - (a / b) * b
。
请注意,您实际上根本不需要此测试;如果if...else
案例得到满足,您可以依赖else
未进入if
案例的行为,例如:
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
答案 1 :(得分:0)
另一个考虑因素,而不是强制代码测试数字3次,重写只对numnbers执行2次测试。
if (in1 % 6) {
if (in2 % 6) {
printf("Divisible: both\n");
} else {
printf("Divisible: only %i\n",in1);
}
} else {
if (in2 % 6) {
printf("Divisible: only %i\n",in2);
} else {
printf("Divisible: neither\n");}
}
}