C语言中取余运算,怎么算?比如有一个负号,怎么算?如-1%2 或者-6%5

 我来答
jackwind1987
2013-09-23 · TA获得超过2738个赞
知道大有可为答主
回答量:1268
采纳率:50%
帮助的人:472万
展开全部
When integers are divided, the result of the / operator is the algebraic quotient with any
fractional part discarded.87) If the quotient a/b is representable, the expression
(a/b)*b + a%b shall equal a.

借用C99标准里的一段话

无论谁正谁负,这个等式应该成立:(a/b)*b + a%b == a

看下面这段代码

#include <stdio.h>

int main() {
    printf("a%%b        \ta-(a/b*b)\n");
    printf("10%%3 = %2d\t10-(10/3*3)=%d\n", 10%3, 10-(10/3*3));
    printf("10%%-3 = %2d\t10-(10/-3*-3)=%d\n", 10%-3, 10-(10/-3*-3));
    printf("-10%%-3 = %2d\t-10-(-10/-3*-3)=%d\n", -10%-3, -10-(-10/-3*-3));
    printf("-10%%3 = %2d\t-10-(-10/3*3)=%d\n", -10%3, -10-(-10/3*3));
    return 0;
}

如果只是单纯记忆的话:

  • |a%b| == |a|%|b|,结果的绝对值就是a的绝对值对b的绝对值取余数

  • sign(a%b) = sign(a),结果的符号与a相同

michaelmei123
2013-09-23 · 超过17用户采纳过TA的回答
知道答主
回答量:99
采纳率:0%
帮助的人:49.5万
展开全部
计算结果的符号与第一个数相同,-1%2=-1,-6%5=-1
更多追问追答
追问
那如果1%-2呢
就是1了对吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2013-09-23 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6354万
展开全部
-1%2结果是-1;
-6%5的结果也是-1。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c761695
2013-09-23
知道答主
回答量:24
采纳率:0%
帮助的人:8.3万
展开全部
先把负号不看。。。算完了再把负号加进去嘛。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
王斌随
2013-09-23 · 超过20用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:42万
展开全部
-1%2=-1
-6%5=-1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式