a++ czy ++a?
grankee
21.09.2008
Zapewne wielu z was spotkało się z czymś takim:
Wielu z was pewnie zastanawiało się jaka jest różnica.
Różnica polega na tym, że jeśli damy ++zmienna to najpierw zmienna zwiększy się o 1 a dopiero po tym zostanie użyta, a jeśli damy zmienna++ to najpierw zmienna zostanie użyta a dopiero po tym zwiększy się o 1.
Podam przykład:
Mam nadzieję, że pomoże to niektórym
zmienna++oraz takim
++zmienna
Wielu z was pewnie zastanawiało się jaka jest różnica.
Różnica polega na tym, że jeśli damy ++zmienna to najpierw zmienna zwiększy się o 1 a dopiero po tym zostanie użyta, a jeśli damy zmienna++ to najpierw zmienna zostanie użyta a dopiero po tym zwiększy się o 1.
Podam przykład:
new a=4 //tutaj a = 4 new b=++a //tutaj a zwiększa się o 1 i ta wartość zostaje przypisana do b (czyli a+1=4+1=5):b=5 new c=7 //tutaj c=7 new d=c++ //tutaj wartość c (czyli 7) zostaje przypisana do d (czyli d=7) a następnie wartość c zostaje zwiększona o 1 (c=8, ale d=7)
Mam nadzieję, że pomoże to niektórym
choyrack
21.09.2008
Może jakiś prostszy przykład
new a=4 console_print(0,"%d",a++)//to wypisze nam liczbe 4 a=4 console_print(0,"%d",++a)//a to wypisze nam liczbe 5
wizu
21.09.2008
To ja poproszę teraz łopatologicznie.
Dlaczego przy tym:
Dlaczego przy tym:
Będzie 4? Po co w takim razie w ogóle używać tego a++ skoro to nic nie zmienia?console_print(0,"%d",a++)//to wypisze nam liczbe 4
GuTeK
21.09.2008
zmienia się..
new a=4 // jak widzicie a=4
console_print(0,"%d",a++)
i a dopiero bedzie mialo wartosc 5 kiedy zostanie 2 raz uzyta konsola przyklad jezeli bysmy wpisaly taki kod
new a=4
console_print(0,"%d",a++) // a=4
console_print(0,"%d",a++) // a=5
console_print(0,"%d",a++) // a=6
console_print(0,"%d",a++) // a=7
wartosc a jest dopiero zmienianna przy uzyciu czegos np jak tutaj wyswietlaniu jakiegos tekstu w konsoli i jak wyswietlimy to dopiero wartosc a zostanie zmieniona
new a=4 // jak widzicie a=4
console_print(0,"%d",a++)
i a dopiero bedzie mialo wartosc 5 kiedy zostanie 2 raz uzyta konsola przyklad jezeli bysmy wpisaly taki kod
new a=4
console_print(0,"%d",a++) // a=4
console_print(0,"%d",a++) // a=5
console_print(0,"%d",a++) // a=6
console_print(0,"%d",a++) // a=7
wartosc a jest dopiero zmienianna przy uzyciu czegos np jak tutaj wyswietlaniu jakiegos tekstu w konsoli i jak wyswietlimy to dopiero wartosc a zostanie zmieniona
choyrack
21.09.2008
Tam się mało precyzyjnie wyraziłem tutaj będzie już wszystko jasne:
new a=4 console_print(0,"%d",a++)//to wypisze nam liczbe 4 console_print(0,"%d",a)//to wypisze nam liczbe 5 console_print(0,"%d",++a)//a to wypisze nam liczbe 6 console_print(0,"%d",a)//a to tez wypisze liczbe 6
grankee
22.09.2008
Tylko, że ja to wszystko napisałem w pierwszym poście
Odnośnie pytania po co to:
Najpierw sprawdza czy 10 jest większe od a, a następnie zwiększa a o 1 i przy sprawdzaniu a=9 jednak już przy princie a=10.
Jeżeli jednak zrobimy to tak:
Odnośnie pytania po co to:
new a=1 while(10>a++) { client_print(id,print_chat,"%d",a) }
Najpierw sprawdza czy 10 jest większe od a, a następnie zwiększa a o 1 i przy sprawdzaniu a=9 jednak już przy princie a=10.
Jeżeli jednak zrobimy to tak:
new a=1 while(10>++a) { client_print(id,print_chat,"%d",a) }To już przed sprawdzeniem zwiększy a o 1 (więc należy uważać na fakt, że przed pierwszym sprawdzeniem a ma już wartość 2 a nie 1) i wartość a przy sprawdzeniu będzie taka sama jaka przy printowaniu.
darkman
18.01.2009
fachowo powiększanie o 1 nazywa się inkrementacją, a zmniejszanie dekrementacją.
działa to tak samo jak
działa to tak samo jak
zmienna += 1 zmienna = zmienna + 1
R3X
18.01.2009
w zależności od kolejności zwracanie-zmiana dodaje się prefiksy: "pre" i "post"
np.
++zmienna preinkrementacja
np.
++zmienna preinkrementacja