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

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

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


Описание[1]

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

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

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

Пример

// ниже показан приоритет операторов по убыванию (сверху вниз):
// Умножение, деление, деление по модулю: * / %
// Сложение и вычитание: + -
// Сравнение: < > <= >=
// Равенство: == !=
// Логическое И: &&
// Логическое ИЛИ: ||
// Присвоение: = += -= *= /= %=

size(640, 360);
background(51);
noFill();
stroke(51);

stroke(204);
for(int i=0; i< width-20; i+= 4) {
  // здесь «30» будет добавлено к «70»,
  // а затем будет выполнено сравнение с текущим значением «i»;
  // для ясности можно добавить скобочки –
  // "if (i > (30 + 70)) {"
  if (i > 30 + 70) {
    line(i, 0, i, 50);
  }
}

stroke(255);
// сначала «2» умножается на «8»
// а затем к результату будет добавлено «4»;
// для ясности можно добавить скобочки –
// "rect(5 + (2 * 8), 0, 90, 20);"
rect(4 + 2 * 8, 52, 290, 48);
rect((4 + 2) * 8, 100, 290, 49);
  
stroke(153);
for (int i = 0; i < width; i+= 2) {
  // сначала будут выполнены операторы сравнения,
  // потом логическое И, и наконец – логическое ИЛИ; 
  // чтобы код лучше читался, можно добавить скобочки:
  // "if(((i > 20) && (i < 50)) || ((i > 100) && (i < width-20))) {"
  if (i > 20 && i < 50 || i > 100 && i < width-20) {
    line(i, 151, i, height-1);
  }

См.также

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