Что значит выражение "-1" в циклах

Паразит

Активный пользователь
Сообщения
63
Реакции
2
Баллы
48
Привет.
Что значит выражение "-1" в циклах?
И не только в циклах.

Часто я встречаю подобные конструкции.
VB.NET:
For i=0 To objMatches.Count-1
    Set objMatch = objMatches.Item(i)
VB.NET:
endPos = i - 1
VB.NET:
if(open<close && open!=-1)
Даже с поясняющим комментрарием
VB.NET:
postest = pos - 1; // - 1 for search not from current position
VB.NET:
return (-1);
VB.NET:
For i = 0 To editorsCount - 1
VB.NET:
if (i != -1
Что значат "-1" или "- 1"
Это же явно не математические действия, правильно?
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,378
Реакции
5,877
Баллы
718
VB.NET:
For i=0 To objMatches.Count-1
Это кусок от поиска через регулярные выражения.

objMatches.Count - содержит количество найденных элементов.
А поскольку в массивах отсчёт начинается не с 1, а с нуля,
то последний элемент массива равен не objMatches.Count, а на единицу меньше.

Образно говоря, диапазон 1...10 по кол-ву чисел = диапазону 0...9 (10 -1)
Код:
return (-1);
0 = false
Все, что не 0 - это true.
Если применить к нулю битовый NOT, то получим в битах все единички, что соответствует числу -1.
Т.е. -1 можно использовать как замену булевой константе true.
Но только не в WinAPI. Там true соответствует 1.

Все остальные цитаты кода нужно рассматривать в конкретном контексте.
 

Паразит

Активный пользователь
Сообщения
63
Реакции
2
Баллы
48
А здесь, что это значит "-1"?
И что вообще значит выражение: "!==-1" ? Это значит, что оно не равно, или что оно не найдено?
JavaScript:
} else if (nonClosingTags.indexOf("|"+strInput.toLowerCase()+"|") !== -1) {
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,378
Реакции
5,877
Баллы
718
Это означает, что сперва проверяется равенство типов данных операндов, а затем проверяется на неравенство само значение (если первая проверка успешно пройдена).
Например, если бы левый операнд вернул null, то проверка вида null != -1 привела бы к критической ошибке в скрипте, в отличие от варианта null !== -1
 
Сверху Снизу