在 C 语言中,以下代码...
#include<stdio.h>
#include<string.h>
#include<stdbool.h>
#include<stdlib.h>
int main() {
int result = (-12) % (10);
printf("-12 mod 10 = %d\n",result);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
给出这个输出
> gcc modTest.c
> ./a.out
-12 mod 10 = -2
Run Code Online (Sandbox Code Playgroud)
但根据这个 mod 计算器-12 mod 10 = 8
在Python中...
> python
Python 3.3.0 (default, Mar 26 2013, 09:56:30)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-52)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> (-12) % (10)
8
Run Code Online (Sandbox Code Playgroud)
C 中发生了什么,产生 -2 而不是 …
为什么模运算符在C和Java中没有按预期工作?
欧几里得的定义说,
\n\n\n\n\n给定两个整数 a 和 b,且 b \xe2\x89\xa0 0,存在唯一整数 q 和 r,使得 a = bq + r 且 0 \xe2\x89\xa4 r < |b|,其中 |b| 表示b的绝对值。
\n
根据以下观察,
\n\n>>> -3 % -2 # Ideally it should be (-2 * 2) + 1\n-1\n>>> -3 % 2 # this looks fine, (-2 * 2) + 1 \n1\n>>> 2 % -3 # Ideally it should be (-3 * 0) + 2\n-1\nRun Code Online (Sandbox Code Playgroud)\n\n看起来%运营商正在按照不同的规则运行。
23 % -5 = -2
23 % 5 = 3
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释我是如何理解这一点的,因为明天我会参加考试.我想说,因为-5 * -5 =25那时25 -2 = 23他们是怎么得到的23.它是否正确?