View Full Version : اعلان نوع متغیر بعد از const
man-fatima
دوشنبه 09 مهر 1386, 21:01 عصر
می خواستم بپرسم چرا در جمله هایی مثل زیر
const float pi 3.14
باید نوع متغیر را اعلام کنیم و در غیر اینصورت چه می شود؟(منطق این کار را می خواهم)
Inprise
دوشنبه 09 مهر 1386, 21:09 عصر
نوع متغیر میزان فضائی که باید تخصیص داده شود را مشخص میکند.
man-fatima
چهارشنبه 11 مهر 1386, 09:24 صبح
با تشکر ولی من اطلاعات بیشتری می خواهم
منطق کار را می خواهم بدانم
emad_67
چهارشنبه 11 مهر 1386, 09:40 صبح
منطقش واضح هست. همونطور که جناب Inprise گفتن وقتی شما بخوای هر متغیری تعریف کنی کامپایلر باید اونو بشناسه و بدونه که برای اون چقدر فضا باید بگیره.این قانون برای همه متغیر هایی که تعریف میکنی برقراره، جدا از اینکه متغیر const هست یا نه. اگر هم نوع متغیر رو مشخص نکنی خوب واضحه که کامپایلر اونو نمیشناسه و بهت ارور میده .با قرار دادن کلمه const پشت متغیر فقط به کامپایلر میگی که این متغیری که تعریف کردی ثابت هست و مقدار اون نباید تغییر پیدا کنه
ولی ممکنه بگی که چرا وقتی اینجوری مینویسیم اروری نمیده:
const s=2;
توی این حالت برای کامپایلر به صورت پیشفرض تعریف شده که اگه با همچین حالیتی برخورد کرد نوع متغیر رو int در نظر بگیره. ولی معمولا همیشه برای واضح بودن کد مقدار int اون هم نوشته میشه
Nima_NF
چهارشنبه 11 مهر 1386, 23:59 عصر
برای اینکه کامپایلر متوجه شود نوع آن را باید چگونه در حافظه تعریف و سپس با روش های مخصوص همان نوع از آن استفاده کند، مثلا دو نوع int و float را در نظر بگیرید که هر دو 4 بایت هستند ولی بدون ذکر نوع float کامپایلر از کجا بداند که بازه تعریف آن (3.4E +/- 38 (7digits می باشد و یا چگونه بفهمد اعشار از کجای 4 بایت شروع می شود ؟
پس نوع باید مشخص شود تا بعد ها در موقع ارسال به توابع و یا هر استفاده دیگری بداند چگونه از آن استفاده کند.
illegalyasync
پنج شنبه 12 مهر 1386, 00:38 صبح
پس نوع باید مشخص شود تا بعد ها در موقع ارسال به توابع و یا هر استفاده دیگری بداند چگونه از آن استفاده کند.
در واقعیت اینجور نیست
کامپایلرهائی که من میشناسم تو حالت عادی هم برای بهینه تر شدن کد مقادیر رو جایگزین میکنن و در عمل بجای اون متغیر ثابت مقدارش رو در قالب اندازهی که بهش داده شده جایگزین میکنن حتی کار به کامپایلر نمیرسه و در preprocessor این موارد انجام میشه و موقع پاس شدن به توابع هم مقدارش مستقیما ارسال میشه
SMRAH1
پنج شنبه 12 مهر 1386, 02:09 صبح
من این سئوال رو توی کلوب به طور کامل جواب دادم!!!
در هر حال illegalyasync (http://barnamenevis.org/forum/member.php?u=41433) جان توجه کن که اینی که شما فرمودید کارکرد ماکرو هاست (در واقع یکی از کارکرد های ماکروها) و علت وجودی نوع const در زبان سی چیز دیگه ای است.دوتا از دلایل عبارتند از:
1) متغیرهای که در کل برنامه ثابت اند و لی گاهی اوقات (به طور استثنا) نیاز به تغییر اونها داریم
2) استفاده در فرستاندن پارامتر به توابع (و اطمینان از عدم تغییر در اونها)
موفق باشید
illegalyasync
پنج شنبه 12 مهر 1386, 02:18 صبح
من میدونم کارکرد ماکرو چیه . به اون کلمه « بهینه سازی» دقت کن و قسمت بهینه سازی ویژوال سی رو تو ام اس دی ان یه نگاهی بنداز ;)
man-fatima
جمعه 13 مهر 1386, 22:17 عصر
از نظرات همه ی دوستان تشکر می کنم
موفق باشید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.