相关疑难解决方法(0)

带负数的模运算

在ac程序中我正在尝试以下操作(只是检查行为)

 x = 5 % (-3);
 y = (-5) % (3);
 z = (-5) % (-3); 

printf("%d ,%d ,%d", x, y, z); 
Run Code Online (Sandbox Code Playgroud)

给我输出为(2, -2 , -2)gcc.我每次都期待一个积极的结果.模数可以为负数吗?任何人都可以解释这种行为吗?

c gcc modulo

172
推荐指数
8
解决办法
18万
查看次数

对负数进行模运算

模运算a%b返回余数,a/b但对于负数,它不会这样做.

#include <stdio.h>

int main(void) {
  int n=-4;
  printf("%d\n",n%3);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

它应返回2为3*( - 2)= - 6小于-4且倍数为3但输出为-1.为什么它(-a) mod b一样对待-(a mod b)

c modulo negative-number

0
推荐指数
1
解决办法
2818
查看次数

标签 统计

c ×2

modulo ×2

gcc ×1

negative-number ×1