PDA

View Full Version : سوال: چرا در این حلقه while خروجی 26 می شود؟



complexcoding
چهارشنبه 27 اردیبهشت 1391, 21:54 عصر
دوستان سلام چرا در این حلقه while خروجی 26 می شود؟

i=0 , s= 1;
while(i++<6)
s+=i++*2;
s+=i;

این یکی حلقه رو هم همینطور نمی دونم چرا s=15 می شه؟

for(i=1,s=0;i<10;i+=4)
s+=i;

پیشاپیش خیلی ممنون از راهنماییتون ولی یه جور باشه بفهمیما گنگ توضیح ندین فقط خواهشا.

soorena
چهارشنبه 27 اردیبهشت 1391, 22:42 عصر
سلام

برنامه اول رو برات ساده تر کردم که بدون توضیح خودت بفهمی. برنامه دوم هم که اگه رو کاغذ خودت پیاده کنی‌ می‌فهمی که چقدر سادست‌.

i=0 , s=1;
while((i=i+1)<6){
s=s+((i)*2);
i++;
}
s+=i;
}

complexcoding
چهارشنبه 27 اردیبهشت 1391, 23:00 عصر
حرف شما آقای soorena درست ولی آخه علامت ++ بعد i مگه نیومده پس اول ضرب می کنیم بعدش یک واحد اضافه می کنیم دیگه؟؟؟ اگه یه واحد اضافه کنیم قبل از ضرب پس ++i با i++ چه فرقی داره؟!؟!؟!

vistacali
چهارشنبه 27 اردیبهشت 1391, 23:22 عصر
دوست گرامی اول i=0 , s=1 میاد سر حلقه while شرط چک میشه همینطو که گفته شده i=1 و کوچکتر از 6 هست حلقه اجرا میشود نتیجه خط اول بعد حلقه که s است میشود 3 و در خط بعد i=2 و بعد میره بازم سراغ حلقه i=3 شرط کوچکتر برقرار است خط بعد حاصل میشود 9 و باز هم به iیک مقدار اضاف میشود i=4و بازم میره سر حلقه بازم بازم i=i+1 که میشه 5 شرط برقرار است خط بعد حلقه s=19 یک واحد به i اضاف میشه i=6 میاد سر حلقه i=i+1 رو انجام میده i=7 شرط چک میشه i بزرگتر از 6است از حلقه میاد بیرون و 19+7 میکنه و در s قرار میدهد حالا کجاش مبهم هست بگید بازم توضیح بدم

ارمین نصیری
چهارشنبه 27 اردیبهشت 1391, 23:35 عصر
سلام دوست عزیز این حالت ها تقدم بشتری دار ++ یا -- به سایر عملگر ها

soorena
پنج شنبه 28 اردیبهشت 1391, 00:46 صبح
سلام

ببین عزیزم ++i یعنی‌ اینکه اول عملیاتی‌ که i در اون دخیله انجام بشه بعدش به i یکی‌ اضافه بشه.ولی‌ i++ یعنی‌ اینکه قبل از اجرای هر عملیاتی‌ یکی‌ به i اضافه کن بد عملیات رو انجام بده.