PDA

View Full Version : سوال: جواب این الگوریتم از داده های شمارشی؟



complexcoding
دوشنبه 26 تیر 1391, 18:25 عصر
چند بایت از حافظه رو اشغال می کنه؟ enum و متغیر نوع دوستان سلام منظوره این سوال چیه؟


چیست؟ prev,cancel مقدار عددی متناظر با شناسه های


enum command{ok,cancel,next=5,prev}w;

Ananas
سه شنبه 27 تیر 1391, 13:24 عصر
سلام.
اینکه enum چند بایته بستگی داره به تنظیمات کامپایلر ولی یه روش برای اینکه کامپایلر رو مجبور کنید سایزشو 32 بیت بگیره مقدار دادن یکی از اعضای داده ی شمارشی به 0x7fffffff هست.
مثلا :

typedef enum _D3DSHADEMODE {
D3DSHADE_FLAT = 1,
D3DSHADE_GOURAUD = 2,
D3DSHADE_PHONG = 3,
D3DSHADE_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
} D3DSHADEMODE;

در اینجا عضو D3DSHADE_FORCE_DWORD در برنامه قرار نیست هیچ استفاده ای داشته باشه و فقط برای تنظیم سایز enum اضافه شده.
مقدار عددی اعضای enum ها رو هم می تونید با استفاده از کدی مثل کد زیر متوجه بشید :
(با توجه به مثال شما من امتحان کردم نتیجه ها رو هم نوشتم)

DWORD d_ok = DWORD(ok); // == 0
DWORD d_cancel = DWORD(cancel); // == 1
DWORD d_next = DWORD(next); // == 5
DWORD d_prev = DWORD(prev); // == 6