Hogyan lehet két változót megcserélni új változó bevezetése nélkül?
int a = 5;
int b = 2;
a = a + b; // 5 + 2 = 7
b = a - b; // 7 - 2 = 5
a = a - b; // 7 - 5 = 2
Vagy
int a,b
a = a^b
b = a^b
a = a^b
Ahol a ^ az bitenkénti kizáró vagy.
vagy ha olyan prog nyelven vagy ahol alap hogy lehet a csere mint pl. Python akkor egyszerűen csak
a,b = b,a
"vagy ha olyan prog nyelven vagy ahol alap hogy lehet a csere mint pl. Python akkor egyszerűen csak
a,b = b,a"
Ott a python csak implicit ideiglenes változót használ, szóval az nem jó megoldás.
@03:27
Az nem tekintendő úgy ahogy mondod. Nincs ideiglenes változó, a python interpreter belső implementációjába, hogy akkor mi van az más kérdés. Egyrészt hogy csak az "a" változó a natív kódba mennyi változót változtat,egyrészt tartozik hozzá referencia számláló. Továbbá ott natív kód szinten pointerek átírása történik.
Egyébként is ha csak a c nyelvet nézzük akkor regiszter használat történik a fentebbi 2 példában, ha nagyon akarom azokat is tekinthetem változóknak, de azok a cpu-hoz tartoznak, ezt nem tudja kikerülni a cpu a működése során.
"Továbbá ott natív kód szinten pointerek átírása történik."
Ja. A python meg a natív kód.
@22:19
A Python interpreter c-ben van implementálva. Továbbá lehet c-ben modulokat írni Python-hoz. Továbbá a ctypes modulnak vajon mi a szerepe a pythonon belül?
"A Python interpreter c-ben van implementálva. Továbbá lehet c-ben modulokat írni Python-hoz. Továbbá a ctypes modulnak vajon mi a szerepe a pythonon belül?"
A python interpretere értelmezi és futtatja a kódot, ami script. Teljesen mindegy, hogy C-ben lett írva, attól még interpreter marad. Ettől kezdve nativitásról beszélni teljesen fölösleges még akkor is, ha a python interpreter képes c-ben írt függvényeket hívogatni. Erre amúgy pl. a Lua is képes, annak VM-je a pythonénál fényévekkel jobb, de még az sem natív.
A natív kód magán a processzoron fut, módosítás nélkül.
Valszleg így van megoldva a VM-ben:
a = 17;
b = 4;
push a;
push b;
a = pop;
b = pop;
ekkor lesz: a 4, b meg 17.
"A python interpretere értelmezi és futtatja a kódot, ami script. Teljesen mindegy, hogy C-ben lett írva, attól még interpreter marad. Ettől kezdve nativitásról beszélni teljesen fölösleges még akkor is, ha a python interpreter képes c-ben írt függvényeket hívogatni."
Alapvetően ez igaz, de vedd figyelembe, hogy ez esetben az egyetlen oka, hogy erről beszéltem mert itt valaki azt mondta, hogy : "Ott a python csak implicit ideiglenes változót használ, szóval az nem jó megoldás." Nem valamifajta hipotetikus módon helyet cserél a két érték, ha azt írom benne, hogy a,b = b,a és nincs igaza annak a hozzászólónak benne, hogy ne lenne ez jó megoldás. Továbbá nem gondolom hogy ezt még tovább kéne magyarázni, így is túl van magyarázva.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!