Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: C kielessä, i++ vai ++i

Ville [17.05.2009 11:56:28]

#

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?

Markus [17.05.2009 12:10:06]

#

"++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;

Ville [17.05.2009 12:29:41]

#

OK
Kiitos

Chiman [17.05.2009 12:36:13]

#

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

Ville [17.05.2009 13:31:36]

#

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ä :/

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta