שאלה לגבי union

Blade2

New member
שאלה לגבי union

ב c++ יש לזה שימוש פרקטי? מה היתרונות והחסרונות של זה?
 

yair24

Member
כן יש לזה שימושים...

אני לא יודע אם בקשר לC++ אבל כל העינין בUNION זה שאתה מגדיר מבנה שיש בו משתנים שחולקים אותו מקום בזיכרון... דוגמא לשימוש בזה יכולה להיות משהו כזה: לדמות רגיסטרים. נגיד הרגיסטר AX שמורכב מAL וAH אם משנים את AL אז AX משתנה גם כן כי הם אותו אחד כנ"ל לגבי AH אם נשנה אותואז גם AX ישתנה. במקרה הזה זה קצת בעיה כי AH ו AL הם ניבלים (ניבל=4 ביט) ואין משתנה שתופס 4 ביט, הכי נמוך זה 8 ביט. אז אפשר לעשות דימוי לרגיסטר של 16 ביט שמורכב משני חלקים של 8 ביט כל אחד. אתה תבין על מה אני מדבר רק אם אתה מכיר קצת אסמבלר. יאיר
 

twiti

New member
AL ו-AH אינם ניבלים אלא אוגרים

מטיפוס בית המורכבים משני ניבלים. כל אוגר מורכב מ-8 סיביות וכל ניבל הוא 4 סיביות ולכן 2 ניבלים לאוגר מטיפוס בית.
 

nahsh

New member
כן. זה מאוד נח

ככה אתה יכול להתייחס לאותו משתנה בשתי דרכים שונות. לדוגמא, אם אתה רוצה להתייחס למשתנה פעם כמספר שלם, ופעם כstruct. ואגב, אפשר גם לפנות לפחות מבית:
typedef unsigned char byte; typedef unsigned short word; struct { byte a; byte b:3; // b is 3 bits long byte c:5; // c is 5 bits long, b & c is in the same byte in memory } d; union example { word w; d strct; };​
 
למעלה