Tôi sẽ giả định rằng các trình biên dịch trực tuyến sử dụng GCC hoặc trình biên dịch tương thích. Tất nhiên, bất kỳ trình biên dịch nào khác cũng được phép thực hiện tối ưu hóa tương tự, nhưng tài liệu GCC giải thích rõ những gì nó làm:
-faggressive-loop-optimizations
Tùy chọn này yêu cầu trình tối ưu hóa vòng lặp sử dụng các ràng buộc ngôn ngữ để lấy ra các giới hạn cho số lần lặp của một vòng lặp. Điều này giả định rằng mã vòng lặp không gọi hành vi không xác định bằng cách ví dụ như gây tràn số nguyên có dấu hoặc truy cập mảng ngoài giới hạn. Các giới hạn cho số lần lặp lại của một vòng lặp được sử dụng để hướng dẫn tối ưu hóa kiểm tra việc mở vòng lặp và bóc và thoát vòng lặp. Tùy chọn này được kích hoạt theo mặc định.
Tùy chọn này chỉ cho phép đưa ra các giả định dựa trên các trường hợp UB được chứng minh. Để tận dụng những giả định đó, có thể cần bật các tính năng tối ưu hóa khác, chẳng hạn như gấp liên tục.
Tràn số nguyên đã ký có hành vi không xác định. Trình tối ưu hóa đã có thể chứng minh rằng bất kỳ giá trị nào i
lớn hơn 173 sẽ gây ra UB và bởi vì nó có thể giả định rằng không có UB, nó cũng có thể giả định rằng i
không bao giờ lớn hơn 173. Sau đó, nó có thể chứng minh thêm rằng điều đó i < 300
luôn đúng, và vì vậy điều kiện vòng lặp có thể được tối ưu hóa đi.
Tại sao lại là 4169 mà không phải một số giá trị khác?
Các trang web đó có thể giới hạn số lượng dòng xuất (hoặc ký tự hoặc byte) mà chúng hiển thị và tình cờ chia sẻ cùng một giới hạn.