Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Processing:Примеры/Приоритет операторов

Материал из Онлайн справочника
Перейти к: навигация, поиск


Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Описание[1]

Если вы не задали явно порядок, в котором должны выполняться операторы, они будут выполнены в соответствии с приоритетом операторов, заданным по умолчанию. К примеру, в выражении «4+2*8» сначала «2» будет умножено на «8», а затем к результату этого умножения будет добавлено «4». Так будет сделано, потому что оператор «*» имеет более высокий приоритет, чем оператор «+». Чтобы программа читалась понятнее, рекомендуем записывать такие выражения примерно так: «4+(2*8)», т.е. с добавлением круглых скобок.

Кроме того, при помощи круглых скобок можно управлять порядком выполнения операторов. Другими словами, если вписать в коде «(4+2)*8», то сначала «4» будет прибавлено к «2», а потом результат будет умножен на «8».

Приоритет операторов по умолчанию показан в начале скетча-примера ниже.

Пример

  1. // ниже показан приоритет операторов по убыванию (сверху вниз):
  2. // Умножение, деление, деление по модулю: * / %
  3. // Сложение и вычитание: + -
  4. // Сравнение: < > <= >=
  5. // Равенство: == !=
  6. // Логическое И: &&
  7. // Логическое ИЛИ: ||
  8. // Присвоение: = += -= *= /= %=
  9.  
  10. size(640, 360);
  11. background(51);
  12. noFill();
  13. stroke(51);
  14.  
  15. stroke(204);
  16. for(int i=0; i< width-20; i+= 4) {
  17.   // здесь «30» будет добавлено к «70»,
  18.   // а затем будет выполнено сравнение с текущим значением «i»;
  19.   // для ясности можно добавить скобочки –
  20.   // "if (i > (30 + 70)) {"
  21.   if (i > 30 + 70) {
  22.     line(i, 0, i, 50);
  23.   }
  24. }
  25.  
  26. stroke(255);
  27. // сначала «2» умножается на «8»
  28. // а затем к результату будет добавлено «4»;
  29. // для ясности можно добавить скобочки –
  30. // "rect(5 + (2 * 8), 0, 90, 20);"
  31. rect(4 + 2 * 8, 52, 290, 48);
  32. rect((4 + 2) * 8, 100, 290, 49);
  33.  
  34. stroke(153);
  35. for (int i = 0; i < width; i+= 2) {
  36.   // сначала будут выполнены операторы сравнения,
  37.   // потом логическое И, и наконец – логическое ИЛИ;
  38.   // чтобы код лучше читался, можно добавить скобочки:
  39.   // "if(((i > 20) && (i < 50)) || ((i > 100) && (i < width-20))) {"
  40.   if (i > 20 && i < 50 || i > 100 && i < width-20) {
  41.     line(i, 151, i, height-1);
  42.   }

См.также

Внешние ссылки

  1. processing.org - Operator Precedence