Tämänhän siis pitäisi olla ikuinen... ja niin onkin, mutta en ymmärrä miksi, koska minusta ehto näkyy toteutuvan. En vain älyä... yksinkertainen juttu, mutta ei vain välähdä nyt kyllä...
int i = 0; while (i >= 0) { cout << "argh"; ++i; }
Eli i = 0... niin kauan kun i on suurempi tai YHTÄ SUURI kuin 0, ehto toteutuu. Ja sehän on 0 eli YHTÄ SUURI kuin 0... miksi ehto ei toteudu? Siis ehdonhan pitäisi tuossa toteutua aivan ensilystissä... vai lisätäänkö arvoon tuo 1 ihan heti ennenkuin tuo ehtii tarkistamaan sen alkuarvon?
Silmukkaa juuri toistetaan niin kauan kuin ehto on tosi. Eli jos i ei koskaan muutu nollaa pienemmäksi, silmukkaa toistetaan loputtomiin.
Antti Laaksonen kirjoitti:
Silmukkaa juuri toistetaan niin kauan kuin ehto on tosi. Eli jos i ei koskaan muutu nollaa pienemmäksi, silmukkaa toistetaan loputtomiin.
miksi pitäisi muuttua nollaa pienemmäksi? siis suurempi tai yhtä suuri kuin...
Silmukka päättyy vasta, kun i on nollaa pienempi. Ehtohan sanoo: toistetaan seuraavaa niin kauan kuin on voimassa "i >= 0".
Antti Laaksonen kirjoitti:
Silmukka päättyy vasta, kun i on nollaa pienempi. Ehtohan sanoo: toistetaan seuraavaa niin kauan kuin on voimassa "i >= 0".
Ahh aivan... Jotenkin ajattelin, että kun i >= 0 tulee trueksi, niin silmukasta mennään pois.
Yön villejä mietteitä taas...
Tuo ei muuten ole kovin ikuinen silmukka, koska lukumuuttuja pyörähtää ennen pitkää ympäri ja luku muuttuu negatiiviseksi. Jos silmukasta poistaa tulostuksen, niin se voi päättyä hyvinkin nopeasti.
Asia on niin kuin Antti sanoi, mutta tässä esimerkissä tuota silmukka ei taidetakaan toistaa aivan loputtomiin, vaan ainoastoon noin 2147483648 kertaa 32 bittisessä ympäristössä. Kun ymmärrät syyn tähän, ymmärrät jotain siitä miten tietokone käsittelee lukuja. Tätä voi kokeilla ottamalla tulostuksen pois silmukasta, jolloin sen suoritus nopeutuu.
Edit: olinpa taas hidas
FooBat kirjoitti:
Asia on niin kuin Antti sanoi, mutta tässä esimerkissä tuota silmukka ei taidetakaan toistaa aivan loputtomiin, vaan ainoastoon noin 2147483648 kertaa 32 bittisessä ympäristössä. Kun ymmärrät syyn tähän, ymmärrät jotain siitä miten tietokone käsittelee lukuja. Tätä voi kokeilla ottamalla tulostuksen pois silmukasta, jolloin sen suoritus nopeutuu.
Edit: olinpa taas hidas
Kyllä sen ymmärrän... sehän ei ollut yöllisen kysymykseni tarkoitus kuitenkaan.
Sitäpaitsi se on kohta ammattini ymmärtää tuo :D
Aihe on jo aika vanha, joten et voi enää vastata siihen.