Добавлен , опубликован

AngelScript

Содержание:
Приоритет Ассоциативность Оператор Описание Пример
1 Нет :: Область видимости a::b
2 Левая . Доступ к члену a.b
2 Левая [] Доступ к индексу a[b]
2 Левая () Вызов функции a(b)
2 Левая ++ Постинкримент a++
2 Левая -- Постдекримент a--
3 Правая ++ Преинкримент ++a
3 Правая -- Предекримент --a
3 Правая ~ Побитовое отрицание ~a
3 Правая ! Логическое НЕ !a
3 Правая not Логическое НЕ not a
3 Правая - Математическая смена знака -a
3 Правая + Математическое взятие модуля +a
3 Правая @ Ссылка @a
3 Правая () Приведение типа a(b)
3 Правая cast Приведение типа cast<a>(b)
4 Левая ** Возведение в степень a**b
5 Левая * Умножение a*b
5 Левая / Деление a/b
5 Левая % Модуль (оставшаяся часть от деления) a%b
6 Левая + Сложение a+b
6 Левая - Вычитание a-b
7 Левая << Битовый сдвиг влево a<<b
7 Левая >> Битовый сдвиг вправо a>>b
7 Левая
Битовый сдвиг вправо c сохранением знакового бита a>>>b
8 Левая Меньше a<b
8 Левая > Больше a>b
8 Левая <= Меньше или равно a<=b
8 Левая >= Больше или равно a>=b
9 Левая == Равно a==b
9 Левая != Не равно a!=b
9 Левая ^^ Логическое исключающее ИЛИ a^^b
9 Левая xor Логическое исключающее ИЛИ a xor b
9 Левая is Принадлежит a is b
9 Левая !is Не принадлежит a !is b
10 Левая & Битовое И a&b
11 Левая Битовое исключающее ИЛИ a^b
12 Левая | Битовое ИЛИ a|b
13 Левая && Логическое И a&&b
13 Левая and Логическое И a and b
14 Левая || Логическое ИЛИ a||b
14 Левая or Логическое ИЛИ a or b
15 Правая ? : Тернарный оператор a?b:c
15 Правая = Присваивание a=b
15 Правая **= Присваивающее возведение в степень a**=b
15 Правая *= Присваивающее умножение a*=b
15 Правая /= Присваивающее деление a/=b
15 Правая %= Присваивающее деление с остатком a%=b
15 Правая += Присваивающее сложение a+=b
15 Правая -= Присваивающее вычитание a-=b
15 Правая <<= Присваивающий битовый сдвиг влево a<<=b
15 Правая >>= Присваивающий битовый сдвиг вправо a>>=b
15 Правая >>>= Присваивающий битовый сдвиг вправо c сохранением знакового бита a>>>=b
15 Правая &= Присваивающее битовое И a&=b
15 Правая ^= Присваивающее битовое исключающее ИЛИ a^=b
15 Правая |= Присваивающее битовое ИЛИ a|=b
15 Правая ?: Теранрный оператор a ? b : c
16 Левая , Перечисление a,b

Ассоциативность

Определяет направление разбора выражения.
  • Левая: слева направо
  • Правая: справа налево
Для примера возьмём правостороннее присваивание с левосторонним сложением:
a = b = c + d + e
Чтоб не вдаваться в подробности, представим что компилятор под капотом заведёт переменную x для промежуточных вычислений и тогда порядок будет таким:
x = c + d
x = x + e
b = x
a = b
Для любителей байткода выражение будет выглядеть так:
ASSIGN(a, ASSIGN(b, ADD(ADD(c, d), e)))

Приоритет

Операции выполняются не слева на право, а следуя приоритету. Чем меньше значение в таблице тем приоритет считается выше, тобишь операция выполнится раньше других. Для операций с одинаковым приоритетом операции будут выполняться в порядке, заданном ассоциативностью.
Возьмём операции с разным приоритетом, например присваивание, умножение и сложение:
a = b + c * d
Вспомнив про переменную x из прошлого абзаца, запишем порядок выполнения:
x = c * d
x = b + x
a = x
Так же не забудем про любителей байткода:
ASSIGN(a, ADD(b, MUL(c, d)))

Содержание
`
ОЖИДАНИЕ РЕКЛАМЫ...
38
% - это же остаток от деления, а не деление с остатком
Ответы (3)
1
ScorpioT1000, Остатком от деления будет то, что оно вернёт. А сама операция называется "деление с остатком"
20
ScorpioT1000, learn.microsoft.com/ru-ru/cpp/cpp/multiplicative-operators-and-t... вообще правильнее называть операцию "модуль", которая по итогу -> "оставшаяся часть от деления". На деле что ты, что nazarpunk и DevilVsLife трактовали тоже самое другими словами. Потому есть универсальное слово "модуль". :)
Чтобы оставить комментарий, пожалуйста, войдите на сайт.