Цикл for має for
ключове слово, за яким слідують дужки, що містять три необов’язкові вирази, розділені крапками з комою, а потім тіло, яке виконується на кожній ітерації циклу.
Метою циклу for у вашому прикладі є встановлення значення count
, яке буде порівняно з zahl
наступним оператором if. Це досягається у виразах з крапкою з комою, тому тілу циклу не потрібно нічого робити.
Оскільки цикл не повинен нічого робити, він використовує порожній оператор як своє тіло.
Якби ;
кінець у кінці було пропущено і ніяких інших змін не було зроблено, тоді оператор if після циклу for сам би став тілом циклу for. (Це не призначено і призведе до порушення програми, як ви вже зазначали.)
Однак зробити ;
тему свого циклу єдиним на одному рядку - це не єдиний спосіб написати порожнє тіло циклу, і це, мабуть, не найбільш розумний спосіб це зробити. Це чудово працює, але проблема в тому, що інші читачі - і, можливо, той самий програміст, який повертається до проекту пізніше - можуть задуматися, чи насправді це була помилка. Зрештою, досить часто набирають крапки з комою в кінці рядків під час кодування мовою в стилі С, тому легко ввести додатковий, де він не належить.
Інша проблема полягає в тому, що в коді , де петля одна лінія з , ;
як його тіло обраний стиль, що важко розпізнати , коли хто - то на самому справі вже зробив помилку, вважаючи а ;
коли один не належить.
Тому ці альтернативи можуть бути кращими:
- ставлячи
;
, з відступом, на наступному рядку - як підказує sh1
- запис тіла циклу як порожній блок
{ }
, а не як порожній оператор
- створення тіла циклу
continue;
заявою, яка просто змушує цикл переходити до наступної ітерації (що те саме, що відбувається, коли тіло циклу порожнє) - також, як пропонує sh1