C-C++: Ugyanúgy viselkedik a két union?
Első verzió:
union Point3D
{
struct
{
double x,y,z;
};
struct
{
double d[3];
};
};
Második verzió:
union Point3D
{
struct
{
double x,y,z;
};
double d[3];
};
Okozhat működésbeli hibát az union-t használó függvényeknél, ha átírom az első verziót a másodikra?
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
mivel a double egész*4 bájtos, így mindegy, de még ha nem lenne, talán akkor is
a memóriában elhelyezkedhet úgy a struct hogy van rajta egy 4 bájtra kiegészítő padding, de az is lehet, hogy nincs (most itt nem fenyeget ez a veszély)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
> Okozhat működésbeli hibát az union-t használó függvényeknél, ha átírom az első verziót a másodikra?
Nem, sőt a második nekem eleve jobbnak tűnik.
Előző kommentáló, a double 8 bájtos, nem 4.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
látom tudsz olvasni
ráadásul olyat nem mondjunk, hogy a double 8 bájtos
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
2*4 az 8, de a double nem azért 8, mert 2*4.
Az int méretének semmi köze az IEEE 754 szabványhoz. Mindegy, hogy az int 8,16,32,akárhány bites, a double attól még ugyanúgy épül fel.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Azt senki sem állította, hogy azért 8, mert 2*4. Az állítás abból a szempontból vizsgálta a helyzetet, hogy a rendszer általában szereti a 4 byte-ra alignolt címeket, és mivel a double által foglalt hely 4 egész számú többszöröse, ez nem fog bekavarni.
Érted most már? Mindenki tudja, hogy szabványok alapján épülnek fel az FPU-k, és csak te beszélsz erről, mi egész másról beszélünk.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Hát iostream, én ezt: "egész*4 bájtos", úgy értelmezem, hogy az egész méretétől függ. Ha meg azt jelenti, hogy 4 többszörösei, akkor is marhaság. Ne hülyítsük már az idetévedőket.
Na léptem...
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
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!