Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

a++ czy ++a?


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
9 odpowiedzi w tym temacie

#1 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 21.09.2008 21:11

*
Popularny

Zapewne wielu z was spotkało się z czymś takim:
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 :)
  • +
  • -
  • 5

#2 choyrack

    Wszechpomocny

  • Użytkownik

Reputacja: 64
Pomocny

  • Postów:369
  • GG:
  • Lokalizacja:Wrocław
Offline

Napisano 21.09.2008 21:25

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

  • +
  • -
  • 0

#3 wizu

    Godlike

  • Przyjaciel

Reputacja: 224
Profesjonalista

  • Postów:1 217
  • GG:
  • Lokalizacja:Sanok
Offline

Napisano 21.09.2008 21:34

To ja poproszę teraz łopatologicznie.
Dlaczego przy tym:

console_print(0,"%d",a++)//to wypisze nam liczbe 4

Będzie 4? Po co w takim razie w ogóle używać tego a++ skoro to nic nie zmienia?
  • +
  • -
  • 0

#4 hq

    Życzliwy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:28
  • GG:
  • Lokalizacja:cstrike / addons
Offline

Napisano 21.09.2008 21:34

Dobre pytanie ...
  • +
  • -
  • 0

#5 GuTeK

    Zaawansowany

  • Użytkownik

Reputacja: 29
Życzliwy

  • Postów:76
  • GG:
  • Steam:steam
  • Lokalizacja:Trzebnica
Offline

Napisano 21.09.2008 22:05

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
  • +
  • -
  • 0

#6 choyrack

    Wszechpomocny

  • Użytkownik

Reputacja: 64
Pomocny

  • Postów:369
  • GG:
  • Lokalizacja:Wrocław
Offline

Napisano 21.09.2008 22:21

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

  • +
  • -
  • 0

#7 wizu

    Godlike

  • Przyjaciel

Reputacja: 224
Profesjonalista

  • Postów:1 217
  • GG:
  • Lokalizacja:Sanok
Offline

Napisano 22.09.2008 08:01

Teraz tak, dzięki.
  • +
  • -
  • 0

#8 grankee

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 22.09.2008 08:14

Tylko, że ja to wszystko napisałem w pierwszym poście ^^

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.
  • +
  • -
  • 0

#9 darkman

    Wszechwiedzący

  • Przyjaciel

Reputacja: 87
Zaawansowany

  • Postów:553
  • Lokalizacja:inactive
Offline

Napisano 18.01.2009 19:06

fachowo powiększanie o 1 nazywa się inkrementacją, a zmniejszanie dekrementacją.

działa to tak samo jak

zmienna += 1
zmienna = zmienna + 1

  • +
  • -
  • 0

#10 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 18.01.2009 19:28

w zależności od kolejności zwracanie-zmiana dodaje się prefiksy: "pre" i "post"

np.
++zmienna preinkrementacja
  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych