首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带负数的模

带负数的模
EN

Stack Overflow用户
提问于 2011-01-10 10:39:41
回答 2查看 1.8K关注 0票数 2

可能重复:

Modulus operation with negatives values - weird thing ??

Mod of negative number is melting my brain!

我试着做25 % -9只是为了好玩,我得到的答案是-2 (这是在谷歌上),当我用C代码做这件事时,我得到了7。有人能解释为什么两个不同的答案吗?

EN

回答 2

Stack Overflow用户

发布于 2014-08-29 18:00:57

在C89/90中,这两种结果都是允许的。从除法和余数中得到的结果被要求“整合”在一起,以便(a/b)*b + a%b == a

从C99开始,需要用负输入的整数除法来截断为零。然而,除法的结果和余数之间的关系仍然是必需的。这意味着(实际上)余数运算的结果总是与左操作数有相同的符号,所以25 % -9必须产生7,而不是-2。

就其价值而言,C++遵循的路径大致相同,只比C++98/03落后几年,其规则与C89/90相同,因此对于您的输入,其馀部分可能是负数或正值(但仍然需要与除法的结果相吻合)。从C++11开始,它需要与C99相同的行为,所以25 %-9 == 7.

其他一些语言(例如Python)要求余数的结果与正确的操作数具有相同的符号。

票数 7
EN

Stack Overflow用户

发布于 2011-01-10 10:41:09

如果你在9的数学基础上想一想,它们和9-2 =7是一样的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4645897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档