break ve continue operatörleri (for, while, do..while) akış kontrolü için döngü yapılarında kullanılır.
Nüanslar:
break kullanımı yalnızca en içteki döngüden çıkmaya neden olur.goto ile birlikte kullanılınca mantığı karmaşık şekilde etkileyebilir.while ve do..while döngülerinde continue kullanımı, eylem sırasını dikkate almazsanız beklenmedik akış geçişlerine yol açabilir.Örnek:
for (int i = 0; i < 5; ++i) { if (i == 2) continue; if (i == 4) break; printf("%d ", i); } // Çıktı: 0 1 3
Eğer döngü, sayacın başlatılması ve güncellenmesi için karmaşık ifadeler kullanıyorsa, continue operatörü nasıl davranır?
Yanlış cevap:
Birçok kişi continue tetiklendiğinde döngü içindeki tüm ifadelerin (örneğin, for içindeki artış) yürütülmeyeceğini düşünür.
Doğru cevap:
Bir for döngüsünde continue tetiklendiğinde kalan döngü gövdesi atlanır, ancak güncelleme ifadesi (for'un üçüncü kısmı) yine de yürütülür:
for (int i = 0; i < 3; printf("adım %d ", i), ++i) { if (i == 1) continue; printf("%d ", i); }
Çıktı:
0
adım 0
adım 1
2
adım 2
Hikaye
Bir dizi üzerinde döngüde continue kullanılırken, döngü parametre sayacının açık bir şekilde güncellenmesi unutulmuştu (bir while döngüsünde), bu durum sonsuz döngüye neden oluyordu.
Hikaye
Eşleşmeleri bulmak için iç içe döngüde break ilk eşleşmede tetikleniyordu, ancak programcı döngünün tamamen durmasını bekliyordu; sonuç olarak diğer elemanların işlenmesi doğru yapılmıyordu.
Hikaye
do..while yapısında, ana döngü continue kullandığında, bir sonraki iterasyona geçmeden önceki kritik kapanış işlemi atlanıyordu, bu da döngü gövdesindeki durum değişikliklerinin yanlış olmasına neden olarak veri kaybına yol açıyordu.