2012-02-29 2 views
1

Я работаю над старым экзаменом для теста, и этот код печатает значение 10 для longVariable. Теперь, вручную, для меня, математика будет идти 9 + 1% 10 = остаток от 0, а не 10 ... Как я ошибаюсь в этом?Почему эта арифметика равна 10, а не 0 с модом в Java

Благодарим за помощь!

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 % 10 в настоящее время обрабатывается как 9 + (1 % 10). Что дает 9 + 1 = 10.

% имеет более высокий приоритет, чем +.

3

% Оператор имеет более высокий приоритет, чем +. Для получения дополнительной информации нажмите, пожалуйста, here

Corrected code: (intVariable1 + 1) % intVariable2;