می خواستم بپرسم چرا در جمله هایی مثل زیر
const float pi 3.14
باید نوع متغیر را اعلام کنیم و در غیر اینصورت چه می شود؟(منطق این کار را می خواهم)
می خواستم بپرسم چرا در جمله هایی مثل زیر
const float pi 3.14
باید نوع متغیر را اعلام کنیم و در غیر اینصورت چه می شود؟(منطق این کار را می خواهم)
نوع متغیر میزان فضائی که باید تخصیص داده شود را مشخص میکند.
UNIX is simple. It just takes a genius to understand its simplicity
-- Dennis Ritchie
با تشکر ولی من اطلاعات بیشتری می خواهم
منطق کار را می خواهم بدانم
منطقش واضح هست. همونطور که جناب Inprise گفتن وقتی شما بخوای هر متغیری تعریف کنی کامپایلر باید اونو بشناسه و بدونه که برای اون چقدر فضا باید بگیره.این قانون برای همه متغیر هایی که تعریف میکنی برقراره، جدا از اینکه متغیر const هست یا نه. اگر هم نوع متغیر رو مشخص نکنی خوب واضحه که کامپایلر اونو نمیشناسه و بهت ارور میده .با قرار دادن کلمه const پشت متغیر فقط به کامپایلر میگی که این متغیری که تعریف کردی ثابت هست و مقدار اون نباید تغییر پیدا کنه
ولی ممکنه بگی که چرا وقتی اینجوری مینویسیم اروری نمیده:
const s=2;
توی این حالت برای کامپایلر به صورت پیشفرض تعریف شده که اگه با همچین حالیتی برخورد کرد نوع متغیر رو int در نظر بگیره. ولی معمولا همیشه برای واضح بودن کد مقدار int اون هم نوشته میشه
برای اینکه کامپایلر متوجه شود نوع آن را باید چگونه در حافظه تعریف و سپس با روش های مخصوص همان نوع از آن استفاده کند، مثلا دو نوع int و float را در نظر بگیرید که هر دو 4 بایت هستند ولی بدون ذکر نوع float کامپایلر از کجا بداند که بازه تعریف آن (3.4E +/- 38 (7digits می باشد و یا چگونه بفهمد اعشار از کجای 4 بایت شروع می شود ؟
پس نوع باید مشخص شود تا بعد ها در موقع ارسال به توابع و یا هر استفاده دیگری بداند چگونه از آن استفاده کند.
در واقعیت اینجور نیست
کامپایلرهائی که من میشناسم تو حالت عادی هم برای بهینه تر شدن کد مقادیر رو جایگزین میکنن و در عمل بجای اون متغیر ثابت مقدارش رو در قالب اندازهی که بهش داده شده جایگزین میکنن حتی کار به کامپایلر نمیرسه و در preprocessor این موارد انجام میشه و موقع پاس شدن به توابع هم مقدارش مستقیما ارسال میشه
من این سئوال رو توی کلوب به طور کامل جواب دادم!!!
در هر حال illegalyasync جان توجه کن که اینی که شما فرمودید کارکرد ماکرو هاست (در واقع یکی از کارکرد های ماکروها) و علت وجودی نوع const در زبان سی چیز دیگه ای است.دوتا از دلایل عبارتند از:
1) متغیرهای که در کل برنامه ثابت اند و لی گاهی اوقات (به طور استثنا) نیاز به تغییر اونها داریم
2) استفاده در فرستاندن پارامتر به توابع (و اطمینان از عدم تغییر در اونها)
موفق باشید
من میدونم کارکرد ماکرو چیه . به اون کلمه « بهینه سازی» دقت کن و قسمت بهینه سازی ویژوال سی رو تو ام اس دی ان یه نگاهی بنداز ;)
از نظرات همه ی دوستان تشکر می کنم
موفق باشید