Заказ операторов на вычитание - PullRequest
0 голосов
/ 25 июня 2018
print(table.getn(szExtension_Locations) - (g_nNumTeleportEntries - 1));
print(table.getn(szExtension_Locations) - g_nNumTeleportEntries - 1);

Вывод:

125
123

Почему эти две строки кода дают разные результаты?Между переменными ничего не происходит.Код в этом точном порядке.Даже если я поменяю их местами, они все равно выдают 123, а потом 125.

1 Ответ

0 голосов
/ 25 июня 2018

Объяснение заключается в ваших скобках: ваше первое выражение оценивается как:

a - (b - 1) = a - b + 1

, а ваше второе выражение оценивается как:

a - b - 1

Таким образом, вы видите разницу в 2 *.*

Этот расчет совершенно не связан с Lua :

Приоритет оператора в Lua работает так же, как и в математике.[...] Круглые скобки могут использоваться для произвольного изменения порядка, в котором должны выполняться операции.

Подробнее о знаке минус перед скобками можно найти здесь .

...