14.2.3 Varo toistoa
Vaikka yksinkertaista funktiota voidaankin käyttää mukavasti
lausekkeen osana, tulee seuraavankaltaista rakennetta välttää:
int i,a_lkm=0;
char st[50]="Saippuakauppias";
for (i=0; i<strlen (st); i++)
if ( jono[i]=='a' ) a_lkm++;
...
Miksikö? Koska strlen- funktio suoritetaan jokaisella silmukan
kierroksella ja strlen suorittaminenhan vaati koko jonon
läpikäymisen! Rakenne tulee korvata seuraavasti:
int i,a_lkm=0,st_pit;
char st[50]="Saippuakauppias";
...
st_pit=strlen(st);
for (i=0; i<st_pit; i++)
if ( jono[i]=='a' ) a_lkm++;
...
Edellä kävisi myös seuraava, miksi?
for (i=strlen(st)- 1; i >= 0; i- - )
if ( jono[i]=='a' ) a_lkm++;