黑马程序员技术交流社区

标题: 关于运算符问题 [打印本页]

作者: 新手啊,多照顾    时间: 2013-8-4 21:38
标题: 关于运算符问题
本帖最后由 新手啊,多照顾 于 2013-8-5 19:45 编辑

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

x=-1;
请问为什么?

作者: yan    时间: 2013-8-4 21:44
算术运算符有需要注意的问题:
如果对负数取模,可以把如模数负号忽略不记,因此你的程序就相当于-25%6,25对6取余,余数是-1
不知道这样解释你能理解吗
作者: 庞海瑞    时间: 2013-8-4 22:06
两边必须同类型
作者: wang100753    时间: 2013-8-4 22:12
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。
作者: 逆袭的风    时间: 2013-8-4 22:23
对负数取模结果的符号只和被除数有关//也就是a%b中的a

想不明白的话,可以倒过来想一想,就明白了
商 * 除数 + ??(余数) =  被除数
作者: 王松松    时间: 2013-8-4 23:58
你应该是对取余这个运算符的不理解。

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

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

与你一同学习。{:soso_e141:}
作者: EYE_SEE_YOU    时间: 2013-8-5 12:58
这个东西呢,这么算就明白了,
-25%-6等同于-25%-6
%取模这个东西就求余数
左边的-25除以右边的-6
-24是-6也是6能在-25里面取到的最大倍数
那-25减一下这个倍数不就是-1了么
所以-25%-6=》-25%6=>-25-(-24)=>-1

作者: 静水流华    时间: 2013-12-8 20:21
在取模运算中如果负数是被除数,结果就为负数
作者: zhouliang    时间: 2014-2-27 15:03
我想问下,在取余运算中,一个正数对一个负数取余,那么这个余数的正负又如何,例如上面这道题,25%-6的结果又是啥样的,这两道题有哪些相似的规律没有,特点和区别又是什么




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2