Pravidla Ucet
Nepřihlášen

Uživatelský profil

Menu

Frooxius
zadna profilová fotka

0 článků, 1 komentářů

Uživatel o sobě zatím nic nenapsal.

Články uživatele

Uživatel dosud nepublikoval žádné články.

Poslední komentáře

Komentář #591 u článku GML - Tipy a triky - Trvalý odkaz

NicharCZ: To není tak úplně pravda, ono to není jiný způsob zápisu, ono je to v podstatě jiný kód, který se sice chová stejně, ale má jiné důsledky a je i pomalejší.

Je třeba si uvědomit, co vlastně ten kód skutečně dělá.

Pokud napíšeš

if x<100 {x+=1}

Tak to nejprve provede vyhodnocení výrazu "x<100", kdy výsledkem je nějaká boolean hodnota (pravda či nepravda), která se následně použije k rozhodnutí, jestli spustit kód, který provádí přičítání hodnoty k proměnné.

Když ale napíšeš

x+=(x<100)

Tak se opět nejprve vyhodnotí výraz "x<100", jenže kód na přičítání se spustí vždycky. Když je x menší jak 100, tak hodnota výrazu bude "true", čemuž odpovídá číslo "1", jinak "false" čemuž odpovídá číslo 0. Problém je, že v obou případech se bude operace sčítání spouštět. Tzn. dokud bude menší jak 100, tak se bude přičítat jednička a pak dokola pořád nula. Tzn. budeš v podstatě zbytečně pořád přičítat nulu k té samé proměnné (přičíst nulu trvá stejně jako jedničku, či jakékoli jiné číslo stejného datového typu), dokola a dokola a úplně zbytečně, kdežto u první verze se kód přičítání přestane zcela spouštět a v tom je ten podstatný rozdíl, proto bych se zásady tu druhou metodu nepoužíval. Další zákeřná věc se kterou by jsi se mohl setkat u jiných jazyků a prostředí je, že true se nemusí rovnat jedničce, ale čemukoliv nenulovému, třeba i 255, takže by jsi skončil s x = 255 ale to už je trochu mimo téma.

Velkej Chytrák
Copyright (c) 2001-2010