A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马张平 中级黑马   /  2012-3-8 09:35  /  1757 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class  Test00
{
        public static void main(String[] args)
        {
       
                System.out.println(1%-5);// 1
                System.out.println(-1%5);// -1
                System.out.println(-1%-5);// -1
                System.out.println(10%-6);//4
                System.out.println(-6%10);//-6
       
        }
}

为什么    System.out.println(-1%-5);// -1
不是等于1呢?

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 赞一个!

查看全部评分

9 个回复

倒序浏览
a%b:左边如果小于右边结果是左边;
        如果出现负数的话只看被模数(左边的数)。
     所以 -1%-5=-1

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
是的毕老师的视频里说的很清楚,很好,对于符号这种只看左边,左边是负数结果就是负数。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
这是%运算符问题,你看看这个
System.out.println(-11%-5);// -1
System.out.println(-11/-5);// 2
-11除以-5商2余-1
lz这是-1除以-5商0余-1
除数*商+余数=被除数 lz还记得吧,呵呵。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
你只要记住,%运算符号看左边!
回复 使用道具 举报
毕老师的视频里说的很清楚,很好,对于符号这种只看左边,左边是负数结果就是负数。
但能不能解释原因呢?
回复 使用道具 举报
dangfei 发表于 2012-3-8 09:59
这是%运算符问题,你看看这个
System.out.println(-11%-5);// -1
System.out.println(-11/-5);// 2

呵呵 数学不好 看了才反映过来 一直以为负负得正呢;P
回复 使用道具 举报
是不是这样的规律:

如果 % 两边的操作数都为正数,则结果为正数或零;如果 % 两边的操作数都是负数,则结果为负数或零。
如果 % 左边的操作数是正数,则模除的结果为正数或零;如果 % 左边的操作数是负数,则模除的结果为负数或零。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
小白 黑马帝 2012-3-8 12:19:01
9#
符号只看左边!
回复 使用道具 举报
左边如果小于右边结果是左边;如果出现负数的话只看被模数(左边的数)。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马