Hirdetés
- Xiaomi 15T - reakció nélkül nincs egyensúly
- Milyen okostelefont vegyek?
- iPhone topik
- Hivatalos a OnePlus 13 startdátuma
- Bemutatkozott a Poco X7 és X7 Pro
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Google Pixel topik
- Külföldi prepaid SIM-ek itthon
- Hat év támogatást csomagolt fém házba a OnePlus Nord 4
- Fotók, videók mobillal
Új hozzászólás Aktív témák
-
Hiftu
senior tag
válasz
Hunmugli
#3817
üzenetére
Elmondom, miért nem ajánlott ilyesmiröl még gondolkodni sem.
1, nem tudod lokálisan elemezni a függvényt. Egy csomó külsö függösége lenne.
2, a külsö függöségei gyakorlatilag láthatatlanok lennének.
3, mások számára olvashatatlan lenne a kód (a való életben ez fontos). Keresnék a változókat lokálisan, paraméterként, adattagként, globálisnak és sehol nem találnák. Ez bujócskának jó lenne, de szoftvernek rossz.
4, hála istennek a c++ nem enged meg ilyet.Megoldás: használj paramétert és minden rendben lesz.
-
Domonkos
addikt
válasz
Hunmugli
#3817
üzenetére
Pointeres hackelessel tuti meg tudnad oldani - noha majdnem ugyanott lennel, ha egy pointert passzolgatnal/raknal egy kulso szkopba a valtozo helyett...
Egyeb ami eszembe jut, az a kulonbozo IPC megoldasok, mint peldaul az osztott memoria. Nem nagyo elegans, az olvashatosagon tuti ront es foloslegesen bonyolitja meg a dolgot, ha csak erre szeretned hasznalni, de mukodhet. -
válasz
Hunmugli
#3817
üzenetére
"El tudok érni egy nemglobális változót egy függvényből anélkül, hogy benne hoznám létre, vagy hogy átadnám neki?"
Szerencsére nem.

( Illetve nyilván mindent meg lehet csinálni, pointerekkel pl. megoldható, de ahhoz azért elég jól kell tudni, hogy adott architektúrán az adott fordító mit csinál és pontosan hova kell célozni a stackben. Ja, meg persze feltétel, hogy az adott változó ténylegesen létezzen, mert a példádban a fordítók jó eséllyel kioptimalizálnák a szam változót )
-
mgoogyi
senior tag
válasz
Hunmugli
#3797
üzenetére
"Baloldalt egy char van, jobboldalt egy bit, ez nem fog menni".
A char egy 8 bites szám és jobb oldalt nem bit van, hanem egy másik 8 bites szám, aminek jellemzően egy adott bitje tér el a többitől. Innentől pedig az alap bitműveletek kellenek (és,vagy,xor,negálás)
Amit csinálsz, azt szokták flageknek hívni, minden bitnek megvan a saját jelentése.Nem kell túlgondolni az elképzelést:
1101 & 0010 = 0000 (bit ellenőrzés)
1101 | 0010 = 1111 (bit beállítás)Gyakorold valamennyit papíron, lehet az segít abban, hogy lásd, hogy melyik művelet mire jó.
Pl. 1-es bittel éselés az adott bit értékét fogja kiköpni, 0-ással(1011) az adott bitet állítod garantáltan nullára.A flagekre visszatérve: ilyesmit szoktak csinálni, hogy:
Option1 = 1 (001)
Option2 = 2 (010)
Option3 = 4 (100)Options = 101 esetén az option 1 és 3 van bekapcsolva.
Bár lehet, hogy te pontosan erre akarod használni."C bitjei balról jobbra vannak számozva, 0tól kezdődően 7ig. Function szerűen kéne"
Szerintem jobbról balra számozd a biteket, akkor a természetes bitsorrendet kapod és a 001 = 1-et jelent majd decimálisan, az 100 meg 4-et pl.
A 0-ás indexű bit a 2^0-át jelenti, az 1-es a 2^1, stb.stb.Ha kérdésed van bitekkel kapcsolatban, akkor kérdezz(akár privátban is rámírhatsz), ezzel relatíve sok gyakorlatom van.
-
Domonkos
addikt
válasz
Hunmugli
#3800
üzenetére
Ha masolsz kodot, akkor rapillanthatok hogy mi csuszhat felre.
BTW: elozo hozzaszolasomban irtam, hogy jol optimalizalva ez akar egyetlen muvelet is lehet. Nos nem.
Ha Nis parameter, akkor (a regiszterekbe masolgatassal egyutt) 4 utasitas lesz. Viszont annyi igaz, hogy ennel nem lesz mar nagyon optimalizaltabb megoldas. Az egy muveletet azt a megfelelo bit atbillentesere ertettem.
-
Domonkos
addikt
válasz
Hunmugli
#3797
üzenetére
Ha a leheto legegyszerubben akarnam megcsinalni, akkor valahogy igy tennem:
C N. bitjenek beallitasa:
C |= (1<<N);Egyetlen bit torlese:
C &= ~(1<<N);Egyetlen bit lekerdezese:
C & (1<<N);Itt termeszetesen a legkisebb helyiertektol es 0-tol szamozodnak a bitek. Hogy hogy ontod osztalyba, mar rad bizom.

Meg par ellenorzessel is elferne.
Ha jol optimalizal a fordito, akkor ez a legtobb architecturan egy-egy utasitas lesz a binarisban. -
dobragab
addikt
válasz
Hunmugli
#3779
üzenetére
C++ szabvány nem engedi meg, hogy ne legyen megadva a visszatérési érték. GCC 4.9 ezek szerint sz*rik rá, ahogy sok minden másra is. [link]
Nem definiált függvény csak akkor fordítási (linkelési) hiba, ha meg is hívod. Ezt gyakran kihasználjuk, pl. template metaprogramozásnál.
int func(int);
double func(char);
using T = decltype(func(1)); // T == int(#3777) EQMontoya
Jogos, erre nem gondoltam. Azt hittem, pointerként kéne kiírnia (
%plenne printf-nél), mert ugye függvénypointer.Ezek szerint a kiírásra nincs függvénypointer-overload (persze, C++98-ban nem lehetne megcsinálni, utána meg kompatibilitási okok miatt nem vezetnék be soha).
Fptr->void*konverzió pedig adatszegmens - utasításszegmens okok miatt nem implicit. Pedigvoid*-os overload van. -
kispx
addikt
válasz
Hunmugli
#3779
üzenetére
kiir:
A függvények alapértelmezett visszatérési típusa int. Emiatt nincs kiírva az int és tér vissza int-tel.Amíg nem hívod meg a beallit() metódust, addig nem mindegyik fordítónál hiba. Amit megakarod hívni, undefined reference to asd::beallit hibaüzenetet kapsz.
double a = 4.3
Default member initializer -
-
dobragab
addikt
válasz
Hunmugli
#3771
üzenetére
Ha megnézed a fordító hibaüzenetét, közelebb kerülsz a megoldáshoz.
int x(int(int(int(int(int(int(int(int))))))));Ez a sor nem egy változó, hanem egy függvény deklarációja.
int x(int (*)(int (*)(int (*)(int (*)(int (*)(int (*)(int (*)(int))))))))Tehát egy inttel visszatérő függvény, [ami paraméterként egy inttel visszatérő függénypointert vesz át]...., ami paraméterként egy intet vesz át.
Utána, a kiírásnál a függvény automatikusan a címére konvertálódik (ami egy függvényre mutató pointer), az viszont bool-ra (nem tudom pontosan, miért). Ezért ír ki 1-et.
Függvénydeklarációnak viszont nem adhatsz értéket.
Nem véletlenül szokták mondani a C / C++ deklarációkra, hogy syntax only a compiler could love…
-
bandi0000
nagyúr
válasz
Hunmugli
#3773
üzenetére
= az mindig értékadás
public:
valami (int a) : asd (a) { } //szoval ez mi?ezt én sem tudom
vagyis ha jól gondolom akkor lesz egy publikus változód a valami, ami kapna? egy intes értéket, bár azzal meg nem csinálsz semmit, szóval passzmit szeretnél csinálni? mert azzal többre mennénk

-
-
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Kuponkunyeráló
- Xiaomi 15T - reakció nélkül nincs egyensúly
- Apple asztali gépek
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- S.T.A.L.K.E.R.: Call of Pripyat
- Víz- gáz- és fűtésszerelés
- Spórolós topik
- Brogyi: CTEK akkumulátor töltő és másolatai
- Konzolokról KULTURÁLT módon
- BIOS topic
- További aktív témák...
- Új iPhone 15 Pro Max 1év garanciával
- Gainward GeForce RTX 5060TI Ghost 8GB Garanciával!
- Eladó Samsung Galaxy S21 FE 5G 8/256GB
- Új csak kipróbált Ulefone Armor 28 ultra 16/1TB amoled kijelző, 120w töltés ütésálló
- DELL Latitude 5310 13.3" FHD 2in1 Touchscreen laptop I5-10310U 16G/512G Win11 Pro, Üzletből, 27%ÁFÁs
- Apple iPhone 13 Pro Max Graphite ProMotion 120 Hz, Pro kamerák 256 GB-100%-3 hó gari!
- HIBÁTLAN iPhone 13 Pro Max 128GB Alphine Green -1 ÉV GARANCIA - Kártyafüggetlen, MS3722, 100% Akksi
- BESZÁMÍTÁS! 32GB(4x8GB) G.Skill Trident Z RGB 4000MHz DDR4 memória garanciával hibátlan működéssel
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- GYÖNYÖRŰ iPhone 12 mini 64GB White -1 ÉV GARANCIA - Kártyafüggetlen, MS3849, 100% Akksi
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: NetGo.hu Kft.
Város: Gödöllő

Ha 


vagyis ha jól gondolom akkor lesz egy publikus változód a valami, ami kapna? egy intes értéket, bár azzal meg nem csinálsz semmit, szóval passz


