c语言的简单问题 x=-30*5%-8; 这个东西算出来怎么是-6,这表达式里没有两个负号相消的规则么
答案:6 悬赏:30 手机版
解决时间 2021-01-02 03:12
- 提问者网友:川水往事
- 2021-01-01 15:04
c语言的简单问题 x=-30*5%-8; 这个东西算出来怎么是-6,这表达式里没有两个负号相消的规则么
最佳答案
- 五星知识达人网友:第幾種人
- 2021-01-01 15:34
除法取余数,涉及到负数时 的运算,不同编译器 会有不同的处理方法。
数学上也没有 统一规定 (涉及到负数时,向上 还是 向下 没有 统一规定)!
得-6 的 编译器 认为
150%-8 和 150%8 一样 得 6
-150%-8 和 -150%8 一样 得 -6
(除数取绝对值再做 % 运算)
数学上也没有 统一规定 (涉及到负数时,向上 还是 向下 没有 统一规定)!
得-6 的 编译器 认为
150%-8 和 150%8 一样 得 6
-150%-8 和 -150%8 一样 得 -6
(除数取绝对值再做 % 运算)
全部回答
- 1楼网友:大漠
- 2021-01-01 20:30
这个符号%是取余数的意识,不是除法
- 2楼网友:旧脸谱
- 2021-01-01 19:57
可以这样看
x=(-30*5)%(-8)
=(-150)%(-8)
=(-150)%8
=-6
在取模里模正负结果都一样
- 3楼网友:白昼之月
- 2021-01-01 18:24
是的
- 4楼网友:从此江山别
- 2021-01-01 17:17
%的函数实现如:
a%b = a - (a / b) * b;
-150 % -8 = -150 - (-150 / -8 ) * (-8) = -150 - 18 * (- 8) = -6;
- 5楼网友:痴妹与他
- 2021-01-01 16:39
%是取余除,结果是剩下的不足除数部分的被除数。被除数是负数,如果取余除后反而剩下了正数,岂不奇怪?所以无论对正数还是负数取余,剩下的肯定是与被取余之数符号相同的数。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯