Я збираюся припустити, що онлайн-компілятори використовують GCC або сумісний компілятор. Звичайно, будь-який інший компілятор також може робити таку ж оптимізацію, але документація GCC добре пояснює, що він робить:
-faggressive-loop-optimizations
Ця опція вказує оптимізатору циклу використовувати мовні обмеження для виведення меж кількості ітерацій циклу. Це передбачає, що код циклу не викликає невизначену поведінку, наприклад, спричиняючи переповнення цілих чисел із знаком або доступ до масиву, що не має обмежень. Межі кількості ітерацій циклу використовуються для керівництва розгортанням циклу та оптимізацією вилучення та виходу з циклу. Цей параметр увімкнено за замовчуванням.
Цей варіант дозволяє лише робити припущення на основі випадків, коли UB доведено. Щоб скористатися цими припущеннями, можливо, потрібно буде ввімкнути інші оптимізації, наприклад, постійне згортання.
Підписане ціле переповнення має невизначену поведінку. Оптимізатор зміг довести, що будь-яке значення, яке i
перевищує 173, спричинить UB, і оскільки він може припустити, що UB не існує, він також може припустити, що i
ніколи не перевищує 173. Потім він може додатково довести, що i < 300
завжди відповідає дійсності, і так що стан циклу можна оптимізувати.
Чому 4169, а не якесь інше значення?
Ці веб-сайти, ймовірно, обмежують кількість вихідних рядків (або символів або байтів), які вони показують, і випадково мають однакову межу.