Processing:Примеры/Приоритет операторов: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Строка 4: Строка 4:
{{Myagkij-редактор}}
{{Myagkij-редактор}}


{{Черновик}}
 


=Описание<ref>[https://processing.org/examples/operatorprecedence.html processing.org - Operator Precedence ]</ref>=
=Описание<ref>[https://processing.org/examples/operatorprecedence.html processing.org - Operator Precedence ]</ref>=
Строка 81: Строка 81:
}}
}}


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
// ниже показан приоритет операторов по убыванию (сверху вниз):
// ниже показан приоритет операторов по убыванию (сверху вниз):
// Умножение, деление, деление по модулю: * / %
// Умножение, деление, деление по модулю: * / %
Строка 148: Строка 148:
|Высота логотипа издателя для schemaNewsArticle=45
|Высота логотипа издателя для schemaNewsArticle=45
}}
}}
{{Навигационная таблица/Справочник языка Processing}}
{{Навигационная таблица/Портал/Processing}}
{{Навигационная таблица/Processing/Примеры}}
{{Навигационная таблица/Телепорт}}

Версия от 12:01, 20 мая 2023


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



Описание[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);
  }

См.также

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