Для чего нужны ; в цикле?

133
26 ноября 2020, 18:40

Есть цикл:

int i = 0;
    for(;;){
    i++;
    }

Как я понял, он бесконечный. Но почему тогда я не могу написать вот так:

for(int i = 0; i++){
//do smth
}

Что ; делает в коде?

И как тогда лучше:

for (int i = 0; i < text.Length ;i++){
}
int i = 0;
for (; i < text.Length ;){
i++;
}
Answer 1

Точка с запятой не просто разделяет элементы, она задает их синтаксический смысл, который определяется их позицией. Пользуясь вашим примером, вы не можете записать оператор цикла как

for (int i = 0; i++) ...

потому что он был бы проинтерпретирован как

for (int i = 0; i++; ) ...

(вполне осмысленная запись, хотя в данном случае и приводит к бесконечному цикла), а вы явно имели в виду.

for (int i = 0; ; i++) ...

Вот если бы не разрешалось пропускать элементы между указанными, то тогда пустых точек с запятой и не понадобилось бы. Такое имеет место, например, в классической форме параметров функции по умолчанию - если аргумент пропущен, все следующий за ним аргументы также должны быть пропущены.

Answer 2

";" служит как разделитель между счетчиком и условием. Думаю что разработчикам языка было легче обойти само наличие аргументов чем разделителей

READ ALSO
Поиск по нескольким полям textbox.filter

Поиск по нескольким полям textbox.filter

Как можно реализовать корректный поиск по нескольким полям с помощью одного textbox? Код ниже работает некорректноТо есть фильтрация должна...

123
Краш MySQL в XAMPP

Краш MySQL в XAMPP

Пытаюсь запустить MySQL в XAMPP но она постоянно крашиться

193