当前位置: 代码迷 >> C语言 >> 新手问题关于模?例如(-8)%(3)?
  详细解决方案

新手问题关于模?例如(-8)%(3)?

热度:308   发布时间:2008-02-19 22:22:10.0
新手问题关于模?例如(-8)%(3)?
我用的是vc++练习C,有点不明白模?为什么(-8)%(3)=(-2);8%(-3)=2
求教高手帮忙?
----------------解决方案--------------------------------------------------------
除不尽的数
如:9%-3=0
----------------解决方案--------------------------------------------------------
取模

--
----------------解决方案--------------------------------------------------------
还真不太明白
----------------解决方案--------------------------------------------------------
还不明白
8%3(去掉6 要剩下的2)
3%8=3(不够除全剩下)
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]默默无纹[/un] 在 2008-2-19 22:22 的发言:[/bo]

我用的是vc++练习C,有点不明白模?为什么(-8)%(3)=(-2);8%(-3)=2
求教高手帮忙?


很荣幸的告诉你...这个答案是无解的
(-8)%(3)=(-2);和8%(-3)=2...涉及到一个正数和一个负数的取模...得看具体的编译器怎么判断...
----------------解决方案--------------------------------------------------------
对于任意的int a,b;
如果b!=0
a/b*b+a%b==a恒成立
也就是a%b总是等于a-a/b*b

事实上,a%b总是和a同号
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]leeco[/un] 在 2008-2-20 16:42 的发言:[/bo]

对于任意的int a,b;
如果b!=0
a/b*b+a%b==a恒成立
也就是a%b总是等于a-a/b*b

事实上,a%b总是和a同号


一般的编译器都是这么解释a%b的...结果必须和a同号
但是在定标准的时候,有争议的是a/b到底是多少
(-8)%3...到底商是-2还是-3...
----------------解决方案--------------------------------------------------------
回复 8# 的帖子
你列举一个商是-3的编译器,我到没见过
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]leeco[/un] 在 2008-2-20 22:29 的发言:[/bo]

你列举一个商是-3的编译器,我到没见过

其实我也没见过...
但是...书上写得21%-5时.结果为1或者-4对于编译器而言都是正确的
我查过资料...很多资料也这么说...
依数学习惯,得到的结果为1,所以大部分编译器都做了某种处理...

[[it] 本帖最后由 peach5460 于 2008-2-20 23:07 编辑 [/it]]
----------------解决方案--------------------------------------------------------
  相关解决方案