PDA

View Full Version : سوال: [0]a و [1]a پس از اجرای دستورات زیر چند است؟



complexcoding
شنبه 28 مرداد 1391, 19:26 عصر
با سلام
دوستان من این تکه کد رو اصلا متوجه نمی شوم ؟
با توجه به این که عدد 12 چگونه در آرایه 10 کاراکتری a قرار می گیرد؟ ممنون می شوم توضیحی ارائه بفرمائید:

union {
int k;
int L;
char a[10];
}t;
t.k=12;

همچنین اینکه بایت در یک آرایه کاراکتری بایت کم ارزش [0]ch و بایت پر ارزش [1]ch قرار می گیرند چگونه است؟

با تشکر

tdkhakpur
شنبه 28 مرداد 1391, 19:38 عصر
با توجه به این که عدد 12 چگونه در آرایه 10 کاراکتری a قرار می گیرد؟ ممنون می شوم توضیحی ارائه بفرمائید:
قرار نیست توی همه آرایه داده قرار بگیر هر داده را به هر اندازه ای که وارد کنید همون اندازه جا میگیره یعنی تو مثال بالا 2 بایت از ارایه پر میشه.

همچنین اینکه بایت در یک آرایه کاراکتری بایت کم ارزش [0]ch و بایت پر ارزش [1]ch قرار می گیرند چگونه است؟
0 کم ارزش و 1 با ارزشتره.

sinaprog
شنبه 28 مرداد 1391, 20:11 عصر
این کد 12 رو تو k ذخیره می کنه

مسعود اقدسی فام
شنبه 28 مرداد 1391, 20:21 عصر
با سلام
دوستان من این تکه کد رو اصلا متوجه نمی شوم ؟
با توجه به این که عدد 12 چگونه در آرایه 10 کاراکتری a قرار می گیرد؟ ممنون می شوم توضیحی ارائه بفرمائید:

union {
int k;
int L;
char a[10];
}t;
t.k=12;

همچنین اینکه بایت در یک آرایه کاراکتری بایت کم ارزش [0]ch و بایت پر ارزش [1]ch قرار می گیرند چگونه است؟

با تشکر

متغیرهای l‌ و k و [12]a هر سه با شروع از یه محل حافظه قرار دارن. دستور آخر l و k و [a[0 رو برابر صفر و [a[1 رو برابر 12 قرار می ده. البته اگه int دو بایتی و char یک بایتی باشه.

tdkhakpur
شنبه 28 مرداد 1391, 23:22 عصر
متغیرهای l‌ و k و [12]a هر سه با شروع از یه محل حافظه قرار دارن. دستور آخر l و k و [a[0 رو برابر صفر و [a[1 رو برابر 12 قرار می ده. البته اگه int دو بایتی و char یک بایتی باشه.
این مطلبی که تحلیل کرده اید اشتباهه.
در نظر داشته باشید همیشه قرار گیری داده ها در union بر مبنای اندازه هاست یعنی در وحله اول اندازه داده مد نظر گرفته میشه و چون در مورد داده فوق عدد 12 هست و این عدد کوچکتر از 256 هست پس میتونه داخل یک بایت جا بگیره به همین دلیل مقدار 12 در داخل a[0] قرار میگیره.
در مورد نوع ها هم ایرادی در بین نیست چون بازه آرایه(10 اندیس) بیشتر از حدی هست که مفسر برای میدان متغییرهای int در نظر گرفته است.

مسعود اقدسی فام
شنبه 28 مرداد 1391, 23:41 عصر
این مطلبی که تحلیل کرده اید اشتباهه.
در نظر داشته باشید همیشه قرار گیری داده ها در union بر مبنای اندازه هاست یعنی در وحله اول اندازه داده مد نظر گرفته میشه و چون در مورد داده فوق عدد 12 هست و این عدد کوچکتر از 256 هست پس میتونه داخل یک بایت جا بگیره به همین دلیل مقدار 12 در داخل a[0] قرار میگیره.
در مورد نوع ها هم ایرادی در بین نیست چون بازه آرایه(10 اندیس) بیشتر از حدی هست که مفسر برای میدان متغییرهای int در نظر گرفته است.

شاید. اگه 12 رو یک بایتی تفسیر کنیم اونطور می‌شه که می‌گید.

tdkhakpur
شنبه 28 مرداد 1391, 23:52 عصر
شاید. اگه 12 رو یک بایتی تفسیر کنیم اونطور می‌شه که می‌گید.
نمیدانم چه شکلی استنباط میکنید اما 12 همون 12 حساب میشه حالت دیگه ای نداره؟
در نظر بگیرید همیشه داده ها بصورت بیتها و از اولین مکان شروع به ثبت میشن تا به اخرین اندازه خودشون برسن.
اگه در مورد Ram یه بررسی انجام بدید با هر تیکی که به ram وارد میشه یه دونه بیت در مکان بعدی که کلاک پالس میده و در محل آدرس خودش قرار میگیره هر چند ra, هم میتونه موازی عمل کنه اما انچه در حالت فیزیکی انجام میشه کلاک پالسی هست که تیک مورد نیاز برای ثبت بیتها رو انجام میده و اینها باعث میشن داده ها از ابتدا به طرف انتها حرکت کنند.

مسعود اقدسی فام
یک شنبه 29 مرداد 1391, 00:20 صبح
نمیدانم چه شکلی استنباط میکنید اما 12 همون 12 حساب میشه حالت دیگه ای نداره؟
در نظر بگیرید همیشه داده ها بصورت بیتها و از اولین مکان شروع به ثبت میشن تا به اخرین اندازه خودشون برسن.
اگه در مورد Ram یه بررسی انجام بدید با هر تیکی که به ram وارد میشه یه دونه بیت در مکان بعدی که کلاک پالس میده و در محل آدرس خودش قرار میگیره هر چند ra, هم میتونه موازی عمل کنه اما انچه در حالت فیزیکی انجام میشه کلاک پالسی هست که تیک مورد نیاز برای ثبت بیتها رو انجام میده و اینها باعث میشن داده ها از ابتدا به طرف انتها حرکت کنند.

مگه من گفتم اشتباه می‌گید؟ یه لخظه شک کردم. نمی٬شه؟ ;)

tdkhakpur
یک شنبه 29 مرداد 1391, 13:07 عصر
مگه من گفتم اشتباه می‌گید؟ یه لخظه شک کردم. نمی٬شه؟ ;)
نه اشتباهی در ارتباط با مطالب ارسالی من در کار نیست فقط در مورد اون مطلبی که برای پاسخ ارسال کردید اشتباهتون خیلی سطحی و ابتدائی بود به همین خاطر توضیح بالا رو برای شما پست کردم.

مسعود اقدسی فام
یک شنبه 29 مرداد 1391, 13:30 عصر
نه اشتباهی در ارتباط با مطالب ارسالی من در کار نیست فقط در مورد اون مطلبی که برای پاسخ ارسال کردید اشتباهتون خیلی سطحی و ابتدائی بود به همین خاطر توضیح بالا رو برای شما پست کردم.

ممنون از تذکرتون.