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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 新手啊,多照顾 初级黑马   /  2013-8-4 21:38  /  1636 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 新手啊,多照顾 于 2013-8-5 19:45 编辑

int a=25,b=6;
int x=-a%-b;

x=-1;
请问为什么?

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

8 个回复

倒序浏览
算术运算符有需要注意的问题:
如果对负数取模,可以把如模数负号忽略不记,因此你的程序就相当于-25%6,25对6取余,余数是-1
不知道这样解释你能理解吗
回复 使用道具 举报
两边必须同类型
回复 使用道具 举报
1、数字精度
所谓数字精度,也就是系统在做数字之间的算术运算时,为了尽最大可能地保持计算机的准确性,而自动进行相应的转换,将不同的数据类型转变为精度最高的数据类型。规则如下:
1)当使用运算符把两个操作数结合到一起时,在进行运算前两个操作数会转化成相同的类型。
2)两个操作数中有一个是double类型的,则另一个将转换成double型。
3)两个操作数中有一个是float类型的,则另一个将也转换成float型。
4)两个操作数中有一个是long类型的,则另一个将也转换成long型。
5)任何其它类型的操作,两个操作数都要转换成int类型。

2、整数型运算(int型)
对于int型的相关操作,加、减、乘的结果都是非常容易理解的,重点讲一下除(/)的运算。
两个整数相除的结果是整数,这一点与数学中是不同的,在Java中,两个整数相除的结果类似于数学中的求模运算。整除的余数是用%表示,例如15 / 2 = 7,而不是7.5,15 % 2 = 1。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
对负数取模结果的符号只和被除数有关//也就是a%b中的a

想不明白的话,可以倒过来想一想,就明白了
商 * 除数 + ??(余数) =  被除数

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报 1 0
你应该是对取余这个运算符的不理解。

% 运算符
25%6 = 1;
-25%6=  -1;
-25%-6 = -1;

总结一条:取余运算先算其正数的取余值,然后其结果得符号取决于运算符左边的值得符号。

与你一同学习。{:soso_e141:}

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
这个东西呢,这么算就明白了,
-25%-6等同于-25%-6
%取模这个东西就求余数
左边的-25除以右边的-6
-24是-6也是6能在-25里面取到的最大倍数
那-25减一下这个倍数不就是-1了么
所以-25%-6=》-25%6=>-25-(-24)=>-1

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
在取模运算中如果负数是被除数,结果就为负数
回复 使用道具 举报
我想问下,在取余运算中,一个正数对一个负数取余,那么这个余数的正负又如何,例如上面这道题,25%-6的结果又是啥样的,这两道题有哪些相似的规律没有,特点和区别又是什么
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马