Forum » Programiranje » Pre in post inkrementacija v c#
Pre in post inkrementacija v c#
slovenc1234 ::
Bi mi lahko kdo na hitro razlozil uporabo inkrementiranja v jeziku c#. V kaksnih primerih se navadno to v praksi uporablja?
Ce je x = 1 potem je x++ enako 1 in ++x enako 2? Kako dalje?
Ce je x = 1 potem je x++ enako 1 in ++x enako 2? Kako dalje?
WarpedGone ::
Ce je x = 1 potem je x++ enako 1 in ++x enako 2? Kako dalje?
Ne, pre in post inkrementacija sta dva ukaza v enem:
a = x++; je ekvivalent ukazoma a = x; x = x + 1;
a = ++x; je ekvivalent ukazoma x = x + 1; a = x;
Če inkrementacija stoji sama zase (ni del izraza ali prirejana), pa sta ekvivalentna, i.e.
++Z; in Z++; oboje rezultira v Z = Z + 1;
Zbogom in hvala za vse ribe
smacker ::
Vsak operator je funkcija. Med pre in post increment je razlika samo v return vrednosti. Oba povečata vrednost operanda za ena, ampak vrneta različen rezultat. Če ne shranjuješ rezultata pre/post incrementa je semantično vseeno kaj uporabiš. Performančno je pre-increment hitrejši, ker ne rabi začasne spremenljivke (note: pametni compilerji znajo to sami optimizirat). Če shranjuješ rezultat v spremenljivko, pa uporabiš takega, ki vrača željen rezultat
x++ si lahko predstavljaš tako
++x pa tako:
x=1; x++ in ++x bo oboje povzročilo da bo x=2.
Če boš imel pa a = x++; ali a = ++x; se bo a razlikoval, medtem ko bo x v obeh primerih 2;
x++ si lahko predstavljaš tako
int post_increment(ref int x){ int old = x; x = x + 1; return old; }
++x pa tako:
int pre_increment(ref int x){ x = x + 1; return x; }
x=1; x++ in ++x bo oboje povzročilo da bo x=2.
Če boš imel pa a = x++; ali a = ++x; se bo a razlikoval, medtem ko bo x v obeh primerih 2;
Zgodovina sprememb…
- spremenil: smacker ()
slovenc1234 ::
Aaaa počasi se mi svita Hvala vam super ste!
Pa to vsi jeziki obravnavajo enako?
Pa to vsi jeziki obravnavajo enako?
Zgodovina sprememb…
- spremenil: slovenc1234 ()
avian2 ::
V kaksnih primerih se navadno to v praksi uporablja?
V resni praksi praktično samo kot samostojen "x++;" (ali ekvivalentno "++x;") stavek za inkrementacijo spremenljivke za 1, na primer v kakšnih zankah kot okrajšava za "x = x + 1;" Karkoli drugega je običajno nečitljiva in težko razumljiva koda, ki pogosto vodi do napak. Na primer aritmetični izrazi, kjer je notri nekje vmes skrit "x++", pri meni ne grejo čez code review. To je razlog, zakaj veliko novejših jezikov opušča te opreratorje. Don't be clever.
111111111111 ::
WarpedGone je izjavil:
Ce je x = 1 potem je x++ enako 1 in ++x enako 2? Kako dalje?
Ne, pre in post inkrementacija sta dva ukaza v enem:
a = x++; je ekvivalent ukazoma a = x; x = x + 1;
a = ++x; je ekvivalent ukazoma x = x + 1; a = x;
Če inkrementacija stoji sama zase (ni del izraza ali prirejana), pa sta ekvivalentna, i.e.
++Z; in Z++; oboje rezultira v Z = Z + 1;
Zelo lepa obrazložitev.
+1
WarpedGone ::
y += (int)(x++ - (float)y-- / ++a)
je ekvivalentno:
a = a + 1
y = y + (int)(x - (float)y / a)
x = x + 1
y = y - 1
je ekvivalentno:
a = a + 1
y = y + (int)(x - (float)y / a)
x = x + 1
y = y - 1
Zbogom in hvala za vse ribe
Yacked2 ::
slovenc1234 je izjavil:
Mi lahko kdo razloži potek izračuna tele enačbe: y += (int)(x++ - (float)y-- / ++a)
Tega in podobnih stvari se v real life izogibaj.
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [Java] array v voiduOddelek: Programiranje | 2280 (1979) | Spura |
» | Programiranje problem androidOddelek: Programiranje | 1172 (937) | g333kk |
» | integralOddelek: Šola | 3369 (1806) | Elyon8472 |
» | dvojni integral, pomocOddelek: Loža | 1642 (1404) | Ktj |
» | [C++] Dve malo težji nalogiOddelek: Programiranje | 2231 (1847) | roli |