Содержание
- 1 Приоритет операторов Operator precedence
- 2 Ассоциативность операторов Operator associativity
- 3 Вычисление операнда Operand evaluation
- 4 Спецификация языка C# C# language specification
- 5 Решаем задачи Абрамян на C. Matrix78
- 6 Решаем задачи Абрамян на C. Matrix77
- 7 Решаем задачи Абрамян на C. Matrix76
- 8 Решаем задачи Абрамян на C. Matrix75
- 9 Решаем задачи Абрамян на C. Matrix74
- 10 Решаем задачи Абрамян на C. Matrix73
- 11 Решаем задачи Абрамян на C. Matrix72
- 12 Решаем задачи Абрамян на C. Matrix71
- 13 Решаем задачи Абрамян на C. Matrix70
- 14 Решаем задачи Абрамян на C. Matrix69
C# предоставляет ряд операторов, поддерживаемых встроенными типами. C# provides a number of operators supported by the built-in types. Например арифметические операторы выполняют арифметические операции с числовыми операндами, а логические операторы выполняют логические операции с операндами bool. For example, arithmetic operators perform arithmetic operations with numeric operands and Boolean logical operators perform logical operations with the bool operands. Большинство операторов могут быть перегружены. Certain operators can be overloaded. С помощью перегрузки операторов можно указать поведение оператора для операндов определяемого пользователем типа. With operator overloading, you can specify the operator behavior for the operands of a user-defined type.
В выражении приоритет и ассоциативность операторов определяют порядок выполнения операций. In an expression, operator precedence and associativity determine the order in which the operations are performed. Порядок вычисления, определяемый приоритетом и ассоциативностью операторов, можно изменить с помощью скобок. You can use parentheses to change the order of evaluation imposed by operator precedence and associativity.
Приоритет операторов Operator precedence
В выражении с несколькими операторами операторы с более высоким приоритетом оцениваются до операторов с более низким приоритетом. In an expression with multiple operators, the operators with higher precedence are evaluated before the operators with lower precedence. В следующем примере умножение выполняется сначала, так как оно имеет более высокий приоритет, чем сложение: In the following example, the multiplication is performed first because it has higher precedence than addition:
Используйте скобки, чтобы изменить порядок вычисления, накладываемый приоритетом операторов: Use parentheses to change the order of evaluation imposed by operator precedence:
В следующей таблице перечислены операторы C# в порядке убывания приоритета. The following table lists the C# operators starting with the highest precedence to the lowest. Операторы в каждой строке имеют одинаковый приоритет. The operators within each row have the same precedence.
Операторы Operators | Категория или имя Category or name |
---|---|
x.y, x?.y, x?[y], f(x), a[i], x++, x—, new, typeof, checked, unchecked, default, nameof, delegate, sizeof, stackalloc, x->y x.y, x?.y, x?[y], f(x), a[i], x++, x—, new, typeof, checked, unchecked, default, nameof, delegate, sizeof, stackalloc, x->y | Первичный Primary |
+x, -x, !x, |
x, ++x, —x, ^x, (T)x, await, &x, *x, true and false
Ассоциативность операторов Operator associativity
Если операторы имеют одинаковый приоритет, порядок их выполнения определяется ассоциативностью операторов: When operators have the same precedence, associativity of the operators determines the order in which the operations are performed:
- Операторы с левой ассоциативностью вычисляются слева направо. Left-associative operators are evaluated in order from left to right. За исключением операторов присваивания и оператора объединения со значением NULL, все бинарные операторы имеют левую ассоциативность. Except for the assignment operators and the null-coalescing operators, all binary operators are left-associative. Например, выражение a + b — c вычисляется как (a + b) — c . For example, a + b — c is evaluated as (a + b) — c .
- Операторы с правой ассоциативностью вычисляются справа налево. Right-associative operators are evaluated in order from right to left. Операторы присваивания, оператор объединения со значением NULL и условный оператор ?: имеют правую ассоциативность. The assignment operators, the null-coalescing operators, and the conditional operator ?: are right-associative. Например, выражение x = y = z вычисляется как x = (y = z) . For example, x = y = z is evaluated as x = (y = z) .
Используйте скобки, чтобы изменить порядок вычисления, накладываемый ассоциативностью операторов: Use parentheses to change the order of evaluation imposed by operator associativity:
Вычисление операнда Operand evaluation
Не связанные с приоритетом и ассоциативностью операторов операнды в выражении вычисляются слева направо. Unrelated to operator precedence and associativity, operands in an expression are evaluated from left to right. В следующих примерах иллюстрируется порядок вычисления операторов и операндов: The following examples demonstrate the order in which operators and operands are evaluated:
Выражение Expression | Порядок вычислений Order of evaluation |
---|---|
a + b | a, b, + a, b, + |
a + b * c | a, b, c, *, + a, b, c, *, + |
a / b + c * d | a, b, /, c, d, *, + a, b, /, c, d, *, + |
a / (b + c) * d | a, b, c, +, /, d, * a, b, c, +, /, d, * |
Как правило, оцениваются все операнды операторов. Typically, all operator operands are evaluated. Однако некоторые операторы оценивают операнды условно. However, some operators evaluate operands conditionally. То есть значение крайнего левого операнда такого оператора определяет, следует ли оценивать другие операнды. That is, the value of the leftmost operand of such an operator defines if (or which) other operands should be evaluated. Эти операторы являются условными логическими операторами И ( && ) и ИЛИ ( || ) , операторами объединения со значением NULL ?? и ??= , условными операторами со значением NULL ?. и ?[] и условным оператором ?: . These operators are the conditional logical AND ( && ) and OR ( || ) operators, the null-coalescing operators ?? and ??= , the null-conditional operators ?. and ?[] , and the conditional operator ?: . Дополнительные сведения см. в описании каждого оператора. For more information, see the description of each operator.
Спецификация языка C# C# language specification
Дополнительные сведения см. в разделе Операторы статьи Спецификация языка C#. For more information, see the Operators section of the C# language specification.
Скриптописание и кодинг
Решаем задачи Абрамян на C. Matrix78
Matrix78. Дана матрица размера $$M imes N$$. Упорядочить ее строки так, чтобы их минимальные элементы образовывали убывающую последовательность.
Решаем задачи Абрамян на C. Matrix77
Matrix77. Дана матрица размера $$M imes N$$. Упорядочить ее столбцы так, чтобы их последние элементы образовывали убывающую последовательность.
Решаем задачи Абрамян на C. Matrix76
Matrix76. Дана матрица размера $$M imes N$$. Упорядочить ее строки так, чтобы их первые элементы образовывали возрастающую последовательность.
Решаем задачи Абрамян на C. Matrix75
Matrix75. Дана матрица размера $$M imes N$$. Элемент матрицы называется ее локальным максимумом, если он больше всех окружающих его элементов. Поменять знак всех локальных максимумов данной матрицы на противоположный. При решении допускается использовать вспомогательную матрицу.
Решаем задачи Абрамян на C. Matrix74
Matrix74. Дана матрица размера $$M imes N$$. Элемент матрицы называется ее локальным минимумом, если он меньше всех окружающих его элементов. Заменить все локальные минимумы данной матрицы на нули. При решении допускается использовать вспомогательную матрицу.
Решаем задачи Абрамян на C. Matrix73
Matrix73. Дана матрица размера $$M imes N$$. После последнего столбца, содержащего только отрицательные элементы, вставить столбец из нулей. Если требуемых столбцов нет, то вывести матрицу без изменений.
Решаем задачи Абрамян на C. Matrix72
Matrix72. Дана матрица размера $$M imes N$$. Перед первым столбцом, содержащим только положительные элементы, вставить столбец из единиц. Если требуемых столбцов нет, то вывести матрицу без изменений.
Решаем задачи Абрамян на C. Matrix71
Matrix71. Дана матрица размера $$M imes N$$. Продублировать столбец матрицы, содержащий ее минимальный элемент.
Решаем задачи Абрамян на C. Matrix70
Matrix70. Дана матрица размера $$M imes N$$. Продублировать строку матрицы, содержащую ее максимальный элемент.
Решаем задачи Абрамян на C. Matrix69
Matrix69. Дана матрица размера $$M imes N$$ и целое число $$K$$ $$(1 le K le $$N$$)$$. После столбца матрицы с номером $$K$$ вставить столбец из единиц.
Все приложения командной строки, поставляемые вместе с Haiku, располагаются в /boot/system/bin . Приложения, которые вы написали или установили самостоятельно, будут располагаться в
/config/bin при установке из пакета .hpkg. Указанные пути располагаются в переменной PATH, таким образом приложения отыскиваются автоматически.
Ниже приведен список все приложений командной строки, поставляемых вместе с Haiku. Для каждого приложения дано краткое описание того, что оно делает. Для получения более подробной информации выполните команду с параметром --help.