اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

تعریف متغیر در بدنه‌ی حلقه یا بیرون حلقه؟

+1 امتیاز
638 نمایش

کدوم یکی از دو تا کد زیر بهتره؟

int x;
for(int i=0; i<100; i++)
{
    // Doing somewhat with x variable
}

یا

for(int i=0; i<100; i++)
{
    int x;
    // Doing somewhat with x variable
}

در صورتی که هر دو از نظر منطقی در برنامه جواب بده.

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پرسیده شده پنجشنبه ۸ فروردین ۱۳۹۲ در C++ توسط prodo  

2 پاسخ

+2 امتیاز

هر دوتاشون تو موقعیت خودش درسته،
کد اول بهتره،
چرا؟
چون ممکنه بخوای از نتیجه محاسباتت که تو حلقه انجام شده بیرون حلقه استفاده کنی، و وقتی کد دوم رو داشته باشی این کار ممکن نیست، چون متغیر رو داخل حلقه تعریف کردی و فقط برای همون حلقه محلی بحساب میاد پس بیرون حلقه از x خبری نیست!
کد دوم بهتره،
چرا؟
چون اگه برای مثال من تو کد اصلیه برنامه 1000 تا حلقه داشته باشم و بخوام واسه هرکدوم متغیرم رو بیرون حلقه تعریف کنم اولا باید هزارتا اسم بدم، دوما باید به اندازه 1000تا متغیر حافظه اشغال کنم، پس دومی بهتره...

Don't Expect Anyone Except Yourself,...
پاسخ داده شده پنجشنبه ۸ فروردین ۱۳۹۲ توسط Arash  

+۱ به خاطر جواب کامل دادن. ولی با هر دوقسمتش مشکل دارم.
قسمت اول: گفتم اگه از نظر منطقی دوتاش درست باشه. اون دلیلی که شما آوردین یعنی از نظر منطقی باید! اولیه استفاده بشه و دومی اشتباهه.
قسمت دوم: نه. می‌شه از همون متغیری که یه بار تعریف شده چندبار استفاده کرد. دلیلی نداره چند تا متغیر تعریف کنیم.
برای وضوح. بحث اصلی سوال‌ام اینه که آیا این دو از نظر کارایی فرق دارن. چون مثلاً تو شیوه‌ی دوم x بارها و بارها ساخته می‌شه و این ساخت متغیر شاید زمان‌بر باشه. یا حتی فضا برای هر بارش اختصاص داده بشه

منظورت رو متوجه شدم.
به نظر من کد اول استفاده بشه بهتره. چون همون طور که گفتی احتمالا ساخت متغیر زمانبره و بهتره به تعداد دفعات کمتری ساخته بشه.
(من خودم تو این ۱۲ سالی که کد میزنم اکثرا از کد اول استفاده کردم)

0 امتیاز

اولین تفاوتی که بین این دوتا به نظر میاد همینه که بعد حلقه با x کار دارم یا نه؟ و عموما کد اول بیشتر استفاده میشه. چون اگه نخوای در لحظه به جواب این سوال فکر کنی، همیشه آپشن استفاده ازش رو داری. واگه حالا استفاده نکردی هم که هیچ.
ولی دومی فکر میکنم بیشتر برای وقتاییه که میخوای تو حلقه با یه متغیر کار کنی که فقط فقط تو حلقه به کارت میاد و حتی شاید بعدش اصلا از اون اسم متغیر بخوای برا یه چیز دیگه استفاده کنی که هیچ ربطی به این یکی نداره. پس تو حلقه تعریفش میکنی که بعدا برات دردسر نشه.
و شبیه دومی، یه استفاده‌ی پرکاربرد‌ی هست اونم وقتیه که میخوای در هر بار تکرار حلقه متغیرت رفرش بشه و مقداری که در طول حلقه گرفته رو از دست بده که بطور کاربردی (بازم میگم) این دستور همراه با یه مقدار دهی اولیه‌س (یا فقط مقدار دهی. و نه تعریف لزوما چون تعریف قبل حلقه ش و توی حلقه‌ش به همون داستان بالا که گفتم ربط داره به نظر من.)

پاسخ داده شده چهارشنبه ۲۸ فروردین ۱۳۹۲ توسط CPP_Crawler4