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.