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!
 Hvala vam super ste! 
 
Pa to vsi jeziki obravnavajo enako?
 Hvala vam super ste!
 Hvala vam super ste! 
 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 | 2601 (2300) | Spura | 
| » | Programiranje problem androidOddelek: Programiranje | 1307 (1072) | g333kk | 
| » | integralOddelek: Šola | 3508 (1945) | Elyon8472 | 
| » | dvojni integral, pomocOddelek: Loža | 1783 (1545) | Ktj | 
| » | [C++] Dve malo težji nalogiOddelek: Programiranje | 2356 (1972) | roli | 
 ...lajf je takoj lažji hehe.
...lajf je takoj lažji hehe.