C++的求余

ttobbox 2010-11-29 04:40:04
-21 % -8 = -5
21 % -5 = 1或-4
21 / -5 = -4或 -5

问下 21 % -5为什么有两个值. 是怎么算的.

21 / -5 也有两个值. 是怎么算的.
...全文
587 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jikeyuan1 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 kingbigeast 的回复:]

楼上很多已经说了跟编译器有关。我说一下为什么不同编译器可以有不同的值。


C/C++ code

21 % -5 = 1或-4 //考虑到除以负整数的余数是0,-1,-2,-3,-4,而除以5的余数是01234

21/-5=-4或-5 //b*(a/b)=a-a%b,由于21%-5=1、-4,可求得相应的21/-5=-4、-5
[/Quote]

不是很懂啊
goddness_520 2010-11-29
  • 打赏
  • 举报
回复
貌似老师上课说过 不过我给它忘记了
wo19870921 2010-11-29
  • 打赏
  • 举报
回复
用的什么编译器啊
kingbigeast 2010-11-29
  • 打赏
  • 举报
回复
楼上很多已经说了跟编译器有关。我说一下为什么不同编译器可以有不同的值。



21 % -5 = 1或-4 //考虑到除以负整数的余数是0,-1,-2,-3,-4,而除以5的余数是01234

21/-5=-4或-5 //b*(a/b)=a-a%b,由于21%-5=1、-4,可求得相应的21/-5=-4、-5

fengbingchun 2010-11-29
  • 打赏
  • 举报
回复
与编译器有关吧
Metrosexual 2010-11-29
  • 打赏
  • 举报
回复
可能是和编译器有关!
jikeyuan1 2010-11-29
  • 打赏
  • 举报
回复
我的结果也没有问题啊 LZ换编译器吧 vs2008
無_1024 2010-11-29
  • 打赏
  • 举报
回复
我用VC6.0 DevC++ 以及 VS2008测试的结果都是 -5 1 -4
qq120848369 2010-11-29
  • 打赏
  • 举报
回复
a. 在C99之前的C标准中,对负数取余没有任何规定,所以在各个编译器上结果都可能不同。
b. 在C99中,强行规定了结果,结果是什么,忘了,要回去查查资料
c. 在C++中,包括C++98还没有任何规定,所以其结果在各个编译器上可能不同。
qwer_boo 2010-11-29
  • 打赏
  • 举报
回复
你确信运行结果是那样的吗?
我试了一下值为 -5,1,-4

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧