Kezdőoldal » Számítástechnika » Programozás » C# argumentumok?

C# argumentumok?

Figyelt kérdés

Üdv, egy rekurzív metódust írtam, és arra figyeltem fel, hogy a


foo(int x, int szamlalo)

{

foo(3, szamlalo++);

}


nem növeli a szamlalo értékét, változatlan marad, míg:


foo(int x, int szamlalo)

{

foo(3,szamlalo + 1);

}


rendesen növeli. Miért van ez így? A metódus hívása után növelné egyel a szamlalo értékét, és ezért nem következik be?


2013. aug. 30. 11:14
 1/4 anonim ***** válasza:
Mert AZUTÁN növekednie csak a szamlalo értéke, hogy lefutott a metódus. Tehát amíg a foo(..) metódusod nem futott le, addig nem fogja növelni az értékét.
2013. aug. 30. 11:17
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:

Azért, mert ha szamlalo++ -t használsz, akkor szamlalo értékkel hívja meg a függvényt és utána növeli.


Használj inkább ++szamlalo -t. Az előbb növel, aztán értékelődik ki.

2013. aug. 30. 12:42
Hasznos számodra ez a válasz?
 3/4 iostream ***** válasza:
Butcher már megint nem ért ahhoz, amiről beszél. A második válaszoló írta jól. A postfix ++ kifejezés értéke az eredeti érték, és mellékhatásként növelődik meg az, amire alkalmazva lett. A + 1 kifejezés értéke az érték + 1, és a bal oldal értéke változatlan. A prefix ++ értéke az érték + 1 és amire alkalmazod az ténylegesen meg is növelődik. Mivel ez csak lokális változó, amit eldobsz, lényegtelen az érték, ezért érdemes a + 1 alakot használni.
2013. aug. 30. 13:30
Hasznos számodra ez a válasz?
 4/4 anonim ***** válasza:

Két dolog van, amit érdemes itt tudni:


1. A szamlalo++ és a szamlalo + 1 nem ekvivalens kifejezések. Nézz utána a post increment és pre increment operátorok működésének.


2. Bár nem tartozik szorosan a kérdéshez, és lehet, hogy már tudod amúgyis, de a value type-ok érték szerint adódnak át, azaz, a függvény-hívás pillanatában egy másolat készül a szamlalo-ról, és az adódik át a függvények, így a hívó kontextusában nem fog semmilyen változást kiváltani, ha a fgv. belsejében változtatod. Csak azért írom le, hogy esetleges jövőbeni hibáktól megkíméld magad.

2013. aug. 31. 09:45
Hasznos számodra ez a válasz?

További kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!