Kezdőoldal » Számítástechnika » Programozás » Hogyan lehet két változót...

Hogyan lehet két változót megcserélni új változó bevezetése nélkül?

Figyelt kérdés
2019. febr. 13. 23:18
 1/10 anonim ***** válasza:
100%

int a = 5;

int b = 2;

a = a + b; // 5 + 2 = 7

b = a - b; // 7 - 2 = 5

a = a - b; // 7 - 5 = 2

2019. febr. 13. 23:38
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:
100%

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

2019. febr. 14. 00:04
Hasznos számodra ez a válasz?
 3/10 anonim ***** válasza:
0%

"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.

2019. febr. 14. 03:27
Hasznos számodra ez a válasz?
 4/10 anonim ***** válasza:
65%

@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.

2019. febr. 14. 13:43
Hasznos számodra ez a válasz?
 5/10 anonim ***** válasza:

"Továbbá ott natív kód szinten pointerek átírása történik."


Ja. A python meg a natív kód.

2019. febr. 14. 22:19
Hasznos számodra ez a válasz?
 6/10 anonim ***** válasza:

@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?

2019. febr. 15. 09:42
Hasznos számodra ez a válasz?
 7/10 anonim ***** válasza:

"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.

2019. febr. 15. 13:14
Hasznos számodra ez a válasz?
 8/10 anonim ***** válasza:
2019. febr. 15. 13:33
Hasznos számodra ez a válasz?
 9/10 anonim ***** válasza:

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.

2019. febr. 15. 13:38
Hasznos számodra ez a válasz?
 10/10 anonim ***** válasza:

"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.

2019. febr. 15. 14:32
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!