Hei vaan perusteiden parissa jälleen... Käytössä Dev-C++ editori ja MinGW-kääntäjä.
Kysymys. miksi allaoleva tulostaa ruudulle luku = 1 kaksi kertaa? Eikö jälkimmäinen kuuluisi olla luku = 2 ?
int luku = 1; printf("luku = %d\n",luku); luku2 = luku++; printf("luku = %d\n",luku);
Jos vaihdan lauseen luku2 = luku++; muotoon, luku2 = ++luku; homma toimii.
Kun lueskelin putkan C opasta käytettiin siellä juurikin tuota ensimmäistä tapaa eli luku2 = luku++;
Eli missä mättää? Olisiko vinkkiä viikoksi?
"++luku" kasvattaa muuttujan "luku" arvoa yhdellä ennen sen arvotusta. "luku++" taas kasvattaa sitä yhdellä arvotuksen jälkeen.
Sekaannusten välttämiseksi en suosittele "++" operaattorin käyttöä lausekkeessa vaan laita se omaksi lauseekseen.
luku++;
luku2 = luku;
OK
Kiitos
Oletko aivan varma, että koodi ja tulostus olivat ensimmäisessä viestissä mainitun kaltaiset? Käsittääkseni sen pitäisi aina tulostaa 1 ja 2. Tässä sama suoritettuna: http://codepad.org/sgJfhHLG
Chiman kirjoitti:
Oletko aivan varma, että koodi ja tulostus olivat ensimmäisessä viestissä mainitun kaltaiset? Käsittääkseni sen pitäisi aina tulostaa 1 ja 2. Tässä sama suoritettuna: http://codepad.org/sgJfhHLG
Näin juuri, oikeassa olet ...
Se mitä tuossa alunperin piti esittää on seuraava :
int luku = 1, luku2 ; printf("luku = %d\n",luku); luku2 = luku++; printf("luku = %d\n",luku2);
Pahuksen kakkonen oli uhohtunut viimeiseltä riviltä :/
Aihe on jo aika vanha, joten et voi enää vastata siihen.