2012-02-29 9 views
1

私はテストのために古い試験をしています。このコードはlongVariableの値10を出力しています。手で、私には、数学は9 + 1%になります10 =残りは0でなく10 ...これはどうやって間違っていますか?なぜこの算術は10で、Javaではmodで0ではない

ありがとうございました!

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); 
} 
} 

EDIT:PEMDAS。私はそれを得たと思う。

+1

オペレータの優先順位を調べる –

答えて

13

業務のご注文を見る:

intVariable1 + 1 % intVariable2; 

は次のとおりです。

intVariable1 + (1 % intVariable2); 

ので9 + 1 % 109 + (1 % 10)として解析されています。これは9 + 1 = 10となります。

%は、+よりも高い優先度を持ちます。

1

代わりに(9+1) % 10を意味しましたか?

3

%演算子の方が+よりも優先されます。詳細については、here

Corrected code: (intVariable1 + 1) % intVariable2;