سلام
متوجه شدم که ثابت ها رو با کلمه کلیدی const بعنوان یک متغییر خصوصی در یک کلاس نمی شه تعریف کرد ولی با استفاده از define# میشه.
می خواستم از تفاوت های دیگرشان مطلع شم.
با تشکر.
سلام
متوجه شدم که ثابت ها رو با کلمه کلیدی const بعنوان یک متغییر خصوصی در یک کلاس نمی شه تعریف کرد ولی با استفاده از define# میشه.
می خواستم از تفاوت های دیگرشان مطلع شم.
با تشکر.
یکی از تفاوت هایی که من می دونم اینه که متغییر هایی که با define تعریف می شوند هیچ حجمی اشغال نمی کنند.
اصولا اگر راجع به شباهتشون حرف بزنیم خلاصه تر میشه !
با define عملا متغیری تعریف نمیشه! فقط یه جایگزاری ساده قبل از کامپایل برنامه انجام میشه! اما با const واقعا یه متغیر تعریف میکنی.
مثلا این کد رو نگاه کن تا بفهمی چی میگم.
#define n 10+2
...
cout<<(n*2);
خوب حالا فکر میکنی خروجی چیه؟ عملا قبل از کامپایل n با 10+2 جایگزین میشه و بعدش حاصل 14 چاپ میشه نه 24!
:موفق:
سلام
مرسی جالب بود.
ولی چرا 14 چاپ میشه ؟
منظورم اینه که اگه n=10 اونوقت 20 چاپ میشه!
منطقشو نفهمیدم؟!
همونطور که گفتم define یه جانشینی ساده است. پس عبارتcout<<(n*2);
تبدیل میشه بهcout<<(10+2*2);
خواهش! :oops:
define برای ایجاد ماکرو استفاده میشه. یعنی مجموعه ای از دستورات که جایگزین فقط یک فرمان می شه یعنی در زمان کامپایل متن موجود در تعریف ماکرو عینا در محل نامیدن ماکرو قرارداده میشه. بعد کامپایل میشه.فرق تعریف ثابت ها بصورت const و define#خیلی سادهست. تقدم عملیاتی ضرب قبل از جمع است. یعنی:ولی چرا 14 چاپ میشه ؟
10+2*2 => 10 + ( 2 * 2 ) => 10 + ( 4 ) => 14
سلام
مشکله من این بود که چرا 2*(2+10) نشد ; که متوجه موضوع شدم.خیلی سادهست. تقدم عملیاتی ضرب قبل از جمع است. یعنی:
10+2*2 => 10 + ( 2 * 2 ) => 10 + ( 4 ) => 14
mr_esmaily عزیز
دوستان بعضا بعلت عجله در جواب دادن متن کامل موضوع رو نمیخونند و علت اینم که بعضی مطالب چند باره تکرار میشن همینه :sunglass: