测试一个数字是否均匀分配到6?

lul*_*ith -1 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");}
Run Code Online (Sandbox Code Playgroud)

这适用于所有正整数,但对于任何负数,打印的代码总是"可分割:不"任何帮助我如何显示正整数和负数可被6整除,余数为0将是非常有帮助的

M.M*_*M.M 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
Run Code Online (Sandbox Code Playgroud)