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

[ROZWIĄZANE] Jak dokładnie działa switch(kod maszynowy)?


Najlepsza odpowiedź Wielkie Jol, 08.02.2015 20:46

Przy małej ilości warunków różnicy nie zauważysz, jednak przy większej powinieneś użyć switcha. Zresztą łatwiej się tym operuje, niż za każdym razem pisać warunek if... then
...
I switch działa szybciej niż if...
Wymagana znajomość angielskiego
http://www.blackwasp...ElseSwitch.aspx Przejdź do postu


  • Zamknięty Temat jest zamknięty
3 odpowiedzi w tym temacie

#1 Ossal

    Wszechwidzący

  • Użytkownik

Reputacja: 20
Życzliwy

  • Postów:273
  • GG:
  • Lokalizacja:Warszawa
Offline

Napisano 08.02.2015 20:01

Powiedzmy że mamy coś takiego:

switch(costam){
          case wartosc1: funkcja1()
          case wartosc2: funkcja2()
          default: funkcja3()
}

Działanie będzie miało identyczne jak coś takiego z użyciem if'a:

if(costam==wartosc1) funkcja1()
else if(costam==wartosc2) funkcja2()
else funkcja3()

Oczywiście tych else if'ów i case'ów mogło by być wiele wiele więcej, to tylko krótki przykład. Moje pytanie jest takie, czy po skompilowaniu jeden kod równa się drugiemu (czy stanowią identyczne obciążenie dla procka)? A może jest tak, ze switch w magiczny sposób od razu przeskakuje do linijki z szukaną wartością? Z góry dzięki za odp :)

 


Użytkownik Ossal edytował ten post 08.02.2015 20:02

  • +
  • -
  • 0

#2 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 683
Wszechmogący

  • Postów:1 258
  • GG:
  • Lokalizacja:AMXX
Offline

Napisano 08.02.2015 20:46   Najlepsza odpowiedź

Przy małej ilości warunków różnicy nie zauważysz, jednak przy większej powinieneś użyć switcha. Zresztą łatwiej się tym operuje, niż za każdym razem pisać warunek if... then
...
I switch działa szybciej niż if...
Wymagana znajomość angielskiego
http://www.blackwasp...ElseSwitch.aspx

Użytkownik Wielkie Jol edytował ten post 08.02.2015 20:47

  • +
  • -
  • 1

"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.


#3 Ossal

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 20
Życzliwy

  • Postów:273
  • GG:
  • Lokalizacja:Warszawa
Offline

Napisano 08.02.2015 21:40

Dobra, tyle chciałem wiedzieć :)


  • +
  • -
  • 0

#4 radim

    Godlike

  • Moderator

Reputacja: 939
Master

  • Postów:2 725
  • Steam:steam
  • Imię:Arkadiusz
  • Lokalizacja:Janów Lub.
Offline

Napisano 08.02.2015 23:35

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0

Chcąc napisać do mnie prywatną wiadomość, wpierw zapoznaj się ze stroną "O mnie" w moim profilu użytkownika [ radim ] !





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

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