class Example {
public static void main(String args[]){
System.out.println(12+8/5%4*(5-4/5)+4*5);
}
}
为什么输出是37?谁能解释一下?我是java的初学者
答案 0 :(得分:1)
检查java中的precedence of the operators:
12+8/5%4*(5-4/5)+4*5
12+8/5%4*(5-0)+4*5
12+8/5%4*5+4*5
12+1%4*5+4*5
12+1*5+4*5
12+5+20
37
答案 1 :(得分:0)
你有:12+8/5%4*(5-4/5)+4*5
在user3134614的帖子中
12+8/5%4*(5-4/5)+4*5
12+8/5%4*(5-0)
12+8/5%4*5+4*5
12+1%4*5+4*5
12+1*5+4*5
12+5+20
37
你有基本的操作符
+
添加两个数字-
减去两个数字*
将两个数字相乘/
除以两个数字这些,更高级的
%
获取两个数字的余数,即除以它们并获得余数,如果数字是偶数,则其余为零,如果是奇数,则为另一个编号
例如,4%4
将4
除以4
得到2
和2 + 2
= 4
,没有余数,另一方面5%4
= 1
,因为2 + 2
= 4
和超过1
括号()
将数学表达式分开并将其作为单个数量返回,例如
5 - (3-2) * 2
相当于5 - (1) * 2
= 5 - 2
= 3
然后
12+8/5%4*(5-4/5)+4*5
12+8/5%4*(5-0) is 12+8/5%4*(5 - (4/5) = 0.8, but converted to integer is 0, then 5 - 0 = 5)
12+8/5%4*5+4*5 is 12+ (8/5 = 1.6, but to integer is 1) %4*5+4*5
12+1%4*5+4*5 is 12+ (1%4 = 1 (1 is different of 4 then result is 1)) *5+4*5
12+1*5+4*5 is 12 + (1*5 = 5) + (4*5 = 20)
12+5+20 and 12 + 5 + 20 = 37
37