c语言的小例子,被除数和被求余数是负数的疑问。

[复制链接]
查看11 | 回复4 | 2013-10-13 15:36:39 | 显示全部楼层 |阅读模式
操作符‘/’和‘%’代表整除和取余:若x和y都是正整数时x/y和x%y的结果都容易确定;但当x和y有负数时,结果就和具体的机器有关,但必有满足x=(x/y)*y+x%y。所以c=5%-3=5-(5/-3)*(-3)=5+1*(-3)=2
d=-5%-3=-5-(-5/-3)*(-3)=-5-1*(-3)=-5+3=-2...
回复

使用道具 举报

千问 | 2013-10-13 15:36:39 | 显示全部楼层
这个问题在C语言早期是没有固定的规定的,所以一些书中会有谁这种行为值不固定,是编译器而决定,但是现在C99中有强制规定了,要求对于整型数a,b,必然满足a%b==a-(a/b)*bPS,其实这一点在K&R第二版中就有提到...
回复

使用道具 举报

千问 | 2013-10-13 15:36:39 | 显示全部楼层
5%-3:(-3)*(-1)+2-5%-3:(-3)*(1)-2总之,商和除数乘积要与被除数符号一致。...
回复

使用道具 举报

千问 | 2013-10-13 15:36:39 | 显示全部楼层
这个必须把负号提在最前面。如a=(-)5/3...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行