1

我正在为一项旧考试进行测试,这段代码正在为 longVariable 打印 10 的值。现在,对我来说,手工计算,数学将是 9 + 1 % 10 = 0 的余数,而不是 10 ......我怎么错了?

谢谢你的帮忙!

 public class ExamSectionA
{
    public static void main(String[] args)
{
    int intVariable1 = 9;
    int intVariable2 = 10;
    double doubleVariable = 11.2;
    char charVariable = 'A';
    long longVariable;
    longVariable = intVariable1 + 1 % intVariable2;
    intVariable2 = (int) (doubleVariable / 10f);
    String[] theirSalary = {"10","20","30","40"};
    System.out.println(intVariable2);
    System.out.println(longVariable); 
}
}

编辑:PEMDAS。想我明白了。

4

3 回答 3

14

注意您的操作顺序:

intVariable1 + 1 % intVariable2;

是:

intVariable1 + (1 % intVariable2);

所以9 + 1 % 10被解析为9 + (1 % 10). 这给了9 + 1 = 10.

%的优先级高于+

于 2012-02-29T18:09:55.700 回答
3

% 运算符的优先级高于 +。欲了解更多信息,请点击此处

Corrected code: (intVariable1 + 1) % intVariable2;
于 2012-02-29T18:12:26.267 回答
1

你的意思是相反(9+1) % 10吗?

于 2012-02-29T18:11:53.487 回答