C语言除法运算结果

两个操作数有一个负数时,x%y的余数结果不明白,有大神能说明下不?... 两个操作数有一个负数时,x % y的余数结果不明白,有大神能说明下不? 展开
 我来答
风若远去何人留
2017-12-25 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450093
专业C/C++软件开发

向TA提问 私信TA
展开全部
这个描述的不准确.
对于最早的C89/C90标准,确实是取决于编译器的.
而C99已经对此做规定了.
除法时, 商向零靠近取整 即-22/5 = -4 22/-5=-4
模除时, 如果 % 左边的操作数是正数,则模除的结果为正数或零;如果 % 左边的操作数是负数,则模除的结果为负数或零。
即 22%-5=2
-22%5=-2
追问
如果按之前的标准,为什么-22%5(22%  -5  )余数是-2或3(2或-3)
追答
所以 对于模除定义, 只要写作
a=b*n+c的形式,且c的绝对值小于b的绝对值,那么c都可以视作a除以b的余数.


-22 = 5*-4 + -2 = 5*-5 +3

由于没有规定模除的符号, 所以 -2和3都是符合余数定义的.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式