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
621
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
Puoluebarometri: Marinin hallituksella 7 parasta mittaustulosta
Orpon hallitusta pitää huonona 2/3 kansalaisista, joka on aika hyvin linjassa hallituspuolueiden yhteenlasketun kannatuk664002Pride-rautu korvaamaan kirjolohi
Kekkosen saatanan tunari meni muuttamaan aikoinaan sateenkaariväen kalan nimen. Unkarin vallankumouksen innoittamana n152117Purran aikaisemmat kannattajat siirtyneet Lindtmanin leiriin
Melkoinen muutos on käynnissä Suomen politiikan kentällä. Tulevista häviäjistä on hirmuinen kiire päästä ajoissa voittaj101894Olen parasta a-luokkaa
Kerron nyt teille, että olen äärimmäisen utelias, ja iitserakas ihminen. Teen paljon aloituksia itseäni koskien ja tunge361244- 271209
Se mua jotenkin harmittaa
Et ko sulla ollu näin paljon selvästi mielenpäällä ollut kaikkea, kysymyksiä, neuvoteltavia asioita ja huolenaiheita, et11983Shakki ja matti
Toivoisin, että olisit läsnä ja tukena arjessani. Et edes tietäisi, että se olen minä tässä ja täällä vain. Olisi asioit71837Oot tosi epätavallinen
ja erikoinen nainen. Tykästyä ikihyviksi sun kaltaiseen naiseen, mitä tästä pitäis edes ajatella.43829- 40731
Peuran liikenne ajovaloissa
Haittaako se jos bussit on romuja ja käyttökiellossa? https://www.ilkkapohjalainen.fi/avi-loysi-kahdeksan-puutetta-kaup24684