c++为什么求余数会出现负数

c++为什么求余数会出现负数,我用的是power函数

  在学带余除法时上面只提到了正整数的带余除法,余数自然应该是非负不大于除数的数了;很多地方也回避了负数的除法中余数是正数还是负数。

避免C++求余数出现负数解决办法:

假设被除数是 a,除数是 b。

有两种方法:

1. 先令 r = a % b,然后如果 r < 0 再进行修正:

r = a % b;
if (r < 0) r += b;

2. 直接使用语句:

r = (a%b+b)%b;

这样就保证了 r >= 0,缺点是要执行两次取余运算,效率会打点折扣。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-01
求余数用%,你做乘方了,超出了原先数据类型能够表达的有效大小了。
类似于int类型的数据,都是使用最高的比特位来表示正负的,数据超长了,而且最高比特位恰好为1的话,就显示为负数了。
第2个回答  2013-11-01
求余数用的是%运算符,power是求多少次方
例如5除以2的余数应该表示成5%2=1
第3个回答  2013-11-01
power是求幂的吧,用%号求余
------无图无真相----------追问

a=power(2,10000000),b=a%35;
打个比方,上面的就会出现b是负数

追答

2^10000000可能机器算下来很大 越界了

你可以输出a 看一下 这个a机器算出来是负数了
所以a%35也是负数

本回答被提问者采纳
相似回答