m=5,n7
int x = ( m * 8 / ( n + 2 ) ) % m ;
结合运行结果: x=4,表示不理解
因为 40/9=4.4 因为int类型取整是4 %是求余符号 4÷5 余数 4
40/9=4.4而int要取整,并且不管是40/9=4.4还是9/2=4.5都是取4即去除后面的小数而不是四舍五入。
其实我最开始也不理解,经过群内大神讲解
因为JAVA只去整数,所以40/9结果为4,4%5,相当于4/5,但是商必须是整数,所以就直接是4了,4/5可以除尽,但是小数,而且这样就无法取余了,初三狗为了放弃游戏正在努力JAVA,同时提升一些罗辑思维和单词量
4取余5商0余4啊。
我的理解:
求余号% 前面的数除后面的数,取余数,和我们小时候算余数一样:9除以4余数是1,9%4 == 1
浮点数的求余差不多,不在后面补零的余数(5.2%4.1 == 1.1),
但浮点数的求余计算会有数据精度问题,5.2%4.1可能结果会是1.1000000005
n+2=9;取和
m*8=40;求积
40/9=4;求商
4%5=4.取模
无语了,建议先学C语言入门
20/7×1/5,约分后相当于4/7.但是4除不了7,所以就把4落下来喽
4余5不是0吗?怎么是4呀?大神?
()的优先级最高,所以先算n+2=9,再算(m*5/9)=40/9,因为类型为整型故40/9的商取整数4,最后算4%5,得商0余4,故最后结果为4
woqu ,有点逆天
4%5为什么余4呢
这些运算符默认都是取整操作
只是最后的结果要求是int类型赋值给x,怎么理解计算过程中40/9的结果也取int类型呢?
40/9 得4 余4,因为是int类型,所以取4就行,然后4%5 得0余4,所以取余为4.
总感觉40/9之后还没有完成赋值运算,实际上赋值应当是40/9%5才对啊,为什么在40/9的时候就要取整了?
取整,取整,取整,重要的事情说三篇。仅仅是取整,千万不要四舍五入
运算符优先级问题,()是最优先,所以先算最内层()中的内容(n+2),然后就变成了(5*8/9)%5,依然先算()内的内容,从左到右依次计算,结果取int型,变成了4%5,商为0,余4。取余为4。
首先先写成容易看的:int x = (5 * 8 / (7 + 2)) % 5;
运算过程:
int x = (5 * 8 / 9) % 5;
int x = (40 / 9) % 5;// 40 / 9 = 4
int x = 4 % 5;// 4 除以 5取余
int x = 4;
40/9=4,都是int类型只取整数部分。
4%5=4,4对5取余数
40/9%5 ??