Jäsenrekisteriohjelmamme päävalinta olisi näppärintä toteuttaa switch - lauseella:
int paavalinta(cKerho &kerho)
{
char nappain;
while (1) {
paamenu(kerho); // Huom päämenun muuttunut parametrilista
nappain = odota_nappain("?012345",0,MERKKI_ISOKSI);
switch (nappain) {
case '?': avustus(nappain); break;
case '0': return 0;
case '1': lisaa_uusi_jasen(nappain); break;
case '2': etsi_jasenen_tiedot(nappain); break;
case '3': tulosteet(nappain); break;
case '4': tietojen_korjailu(nappain); break;
case '5': paivita_jasenmaksuja(nappain); break;
default : cout << "Näin ei voi käydä!" << endl; return 1;
}
}
}
switch - lauseessa case osien lopuksi break on yleensä välttämätön. break estää suorittamasta seuraavia rivejä.
Joskus harvoin breakin puuttumista voidaan käyttää hyväksi, mutta tällöin pitää olla todella tarkkana:
switch (operaatio) {
case 5: /* Operaatio 5 tekee saman kuin 4 */
case 4: x *= 2; break; /* 4 laskee x=2*x */
case 3: x += 2; /* 3 laskee x=x+4 */
case 2: x++; /* 2 laskee x=x+2 */
case 1: x++; break; /* 1 laskee x=x+1 */
default: x=0; break; /* Muut nollaavat x:än */
}
Lause default suoritetaan jos mikään case- osista ei ole täsmännyt (tai tietysti jos jokin break puuttuu). default- lauseen ei tarvitse olla viimeisenä, mutta tällöin vaaditaan taitavaa breakin käyttöä, siis paras pitää default viimeisenä!
Yleistä switch- lausetta ei voi korvata joukolla if- lauseita käyttämättä goto- lausetta. Mikäli kuitenkin jokaisen case rakenteen perässä on break, voidaan switch- korvata sisäkkäisillä if- else - rakenteilla.