C/C++取模为什么和数学中的不同


# C/C++ 中的取模运算和数学中有什么不同

> C/C++/Java 的取模运算和数学中有些不同,一定要注意!!!

先举一个简单的例子:

-1 % 3 = ?

而对于这个例子,不同的程序也给出了不同的答案:

win10自带计算器:

 

C++:

 

Java:

 

为什么会出现这种情况呢?

因为在数学中和在计算机中虽然他们的计算过程相同,但是计算结果却有些差异。

就拿这个例子来说

```math
-1 % 3 = (-1) - 3 * (-1 / -3)
```

计算过程是相同的,但是他们分别是怎么处理的呢?

 

所以,在C中,对一个负数进行取模运算,结果一定是一个负数。