Joskus kesken silmukan tulee vastaan tilanne, jossa silmukan suoritus haluttaisiin keskeyttää. Tällöin voidaan käyttää C- kielen break- lausetta, joka katkaisee sisimmän silmukan suorituksen.
#include <stdio.h> int main(void) { int summa=0,luku; printf("Anna lukuja. Summaan niitä kunnes annat 0 tai summa > 20\n"); while ( summa <= 20 ) { printf("Anna luku>"); scanf("%d",&luku); if ( luku == 0 ) break; summa += luku; } printf("Lukujen summa on %d.\n",summa); return 0; }
Jos edellä olisi ollut alustus luku=1, olisi tietenkin while - silmukan ehto voitu kirjoittaa muodossa
while ( ( luku != 0 ) && ( summa <= 20 ) ) {
mutta aina ei voida break - lausetta korvata näin yksinkertaisesti. Esimerkiksi seuraava olisi jo hankalampi muuttaa:
while ( summa <= 20 ) { cout << "Anna luku>"; getline(cin,s); if ( sscanf(s.c_str(),"%d",&luku) < 1 ) break; if ( luku == 0 ) break; summa += luku; }
break - lauseen vika on lähinnä siinä, ettei siitä suoraan nähdä sisäkkäisten silmukoiden tapauksessa sitä, mihin saakka suoritus katkeaa. Epäselvissä tapauksissa silmukan katkaisu voidaan hoitaa goto - lauseella.
Silmukka voidaan katkaista tietenkin myös muuttamalla silmukan lopetusehtoon vaikuttavia muuttujia. Varsinkin for- lauseen tapauksessa silmukan indeksin arvon muuttaminen muualla kuin kasvatus- lauseessa on todella väkivaltaista ja rumaa, eikä tällaista pidä mennä tekemään.