我编写了一个小程序,该程序从控制台获取3个数字并计算平方的类型。
import java.util.Scanner;
public class TheatreSquare {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int m = scanner.nextInt();
int a = scanner.nextInt();
long i = n / a + n % a != 0 ? 1 : 0;
long j = m / a + m % a != 0 ? 1 : 0;
System.out.println(i);
System.out.println(j);
System.out.println((long)i*j);
}
}
我在测试过程中遇到的问题如下-输入数字时: 1000000000 1000000000 1
它返回: 1个 1个 1
它应该返回时 1000000000 1000000000 1000000000000000000
如果用括号覆盖两个三元运算符,则结果将是正确的。但是它如何影响呢?据我所知执行顺序应该相同,这里没有溢出。那么为什么它如此工作?
答案 0 :(得分:2)
检查运算符优先级顺序表here:三元运算符出现在(in)等式运算符或算术运算符之后,位于最后一位,因此如果没有括号,您将要评估n / a + n % a != 0
首先,然后求值result ? 1 : 0
,然后将其分配给您的变量。
如果这不符合您的口味,请添加括号。
即使这就是您想要的,添加括号也会大大提高可读性。