eräässä C -ohjelmointioppaassa oli varoittava esimerkki ohjelmointivirheen seurauksena päättymättömästä silmukasta:
#include
void main(void) {
unsigned i;
for (i=10; i >= 0; i--) {
printf(“i is %u\n”, i);
}
}
--------
Entäpä vastaava for -silmukka Delphillä:
procedure TForm1.bnLoopTestClick(Sender: TObject);
var
SL : TStrings;
L : Longword;
begin
//
SL := memLog.Lines;
for L := 10 downto 0 do begin
SL.Add( IntToStr(L) );
// ---------------------------
if L >= $FFFFFFF0
then begin
//
SL.Add('--- Päättymätön silmukka - lopetettu. ---');
EXIT;
end;
end;
end;
Arvatkaapa, tulostaako ohjelma tuon '--- Päättymätön silmukka - lopetettu. ---' ?
EI !!
Ohjelma tulostaa kiltisti numerot 10:stä alaspäin 0:aan saakka ja lopettaa.
Delphi turvallisempi
2
547
Vastaukset
- Delphi fani
Mitä ihmeen varoittavaa tuossa nyt on, meinaa c-koodissa, ikuinen luuppiko, huh!
Eiköhän koodata tuo C sitten hiukan erilailla, kun ei haluta ikuista härdelliä, tuon nyt luulisi
olevan itsestään selvyys, mutta kaipa nuo oppaan tekijät aina ovat niitä "virheistä oppii miehiä"
////////////////////////////////////////////////
#include
void main(void) {
unsigned i;
for (i=10; i >= 0; i--) {
if (i >= 0xFFFFFFF0) break;
printf("i is %u\n", i);
}
}
/////////////////////////////////////////////// - vaarallista!
Kyllä aloittaja nyt tais tehdä kärpäsestä härkäsen. Päättymättömissä luupeissa ei ole itsessään mitään vaarallista, ne voi joissain tilanteissa olla toki harmillisia kun ei exitiä ole vaan ohjelma menee takas alkuun mutta kyllä niistä aina jollain konstin irti pääsee.
Sen sijaan mä kokisin vaaralliseksi jotkut tietyt toimenpiteet jotka on alatason rautakäskyjä, esim. väärillä käskyillä voidaan vaikka vahingossa formatoida kovo, tai vaikka tyhjentää bios.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
20v on otettu kiinni
Tulipalo oli sytytetty joten murhasiko ex omat lapsensa ja heidän Äidin. Tuskin sitä kukaan ohikulkijakaan sytytti.1247629Somali ei kätellyt Stubbia Linnan juhlissa
Miksei somali osaa noudattaa hyviä käytöstapoja. https://www.iltalehti.fi/viihdeuutiset/a/563a3dea-fa3f-41f3-b64f-406d26654897Kuka on menehtynyt?
https://yle.fi/a/74-20198293 Kuulemani mukaan ryyppyporukka ollut hapualla ja kuolemanenkeli (F.G) eli mies jonka seuras243204- 531347
Nainen, ota nyt rauhallisesti
Älä ota kaiken maailman murheita päällesi. Sulla on tapana ottaa elämä liian vakavasti. Ei aina, mutta joskus menee vähä1381337Savonlinan perhesurma, epäilty mies romani, äiti kantaväestöä
https://www.is.fi/kotimaa/art-2000011676508.html Savonlinnan seudun romaniyhdistyksestä kerrottiin lauantaina IS:lle, e951261Savonlinnan murhapolttaja romani
Ainakin IS kertoo. Arvasin heti ettei ole normi valkolainen suomalainen.1651193Ajattelen sinua kiitollisuudella
Olet minulle jotain kaunista, jotain, joka tapahtui elämässäni. Et ole minulle pakkomielle enkä vaadi sinulta yhtään mi55993- 17982
Sinulle tiedoksi
Olen paljon miettinyt sitä hetkeä, kun uskalsin näyttää pienin elein ja kertoa pienesti, eli hyvin hillitysti sinulle si27873