Çevrimiçi derleyicilerin GCC veya uyumlu bir derleyici kullandığını varsayacağım. Elbette, başka herhangi bir derleyicinin de aynı optimizasyonu yapmasına izin verilir, ancak GCC belgeleri ne yaptığını iyi açıklar:
-faggressive-loop-optimizations
Bu seçenek, döngü iyileştiricisine bir döngünün yineleme sayısı için sınırlar türetmek üzere dil kısıtlamalarını kullanmasını söyler. Bu, döngü kodunun, örneğin işaretli tamsayı taşmalarına veya sınır dışı dizi erişimlerine neden olarak tanımlanmamış davranışları başlatmadığını varsayar. Döngünün yineleme sayısının sınırları, döngü açma ve sıyırma ve döngü çıkış testi optimizasyonlarına rehberlik etmek için kullanılır. Bu seçenek varsayılan olarak etkindir.
Bu seçenek yalnızca, UB'nin kanıtlandığı durumlara dayalı olarak varsayımlar yapılmasına izin verir. Bu varsayımlardan yararlanmak için, sabit katlama gibi diğer optimizasyonların etkinleştirilmesi gerekebilir.
İmzalı tamsayı taşması tanımsız davranışa sahiptir. Optimizer, 173'ten i
büyük herhangi bir değerin UB'ye neden olacağını kanıtlayabildi ve UB olmadığını varsayabildiğinden, i
bunun asla 173'ten büyük olmadığını da varsayabilir . Daha sonra bunun i < 300
her zaman doğru olduğunu kanıtlayabilir ve böylece döngü koşulu optimize edilebilir.
Neden 4169 ve başka bir değer değil?
Bu siteler muhtemelen gösterdikleri ve aynı sınırı paylaştıkları çıktı satırlarının (veya karakterlerin veya baytların) sayısını sınırlar.