کمک در مورد حلقه while

Apollo

Active Member
من هر چقدر این تیکه برنامه رو تریس میکنم جواب میشه 96 ولی جواب اصلی 97 ِ چطوری ؟؟
برنامه C++ هم ندارم که امتحان کنم
یعنی ممکنه وقتی شرط X در آخر و زمانی که برقرار نیست و قراره از حلقه بیاد بیرون به X یک مقدار اضافه کنه ؟؟
کد:
void Main()
{int X=0 , total=0;
while(X++<=5)
total+=X++;
Cout<<total<<x;}
 
آخرین ویرایش:

the_king

مدیرکل انجمن
من هر چقدر این تیکه برنامه رو تریس میکنم جواب میشه 96 ولی جواب اصلی 97 ِ چطوری ؟؟
برنامه C++ هم ندارم که امتحان کنم
یعنی ممکنه وقتی شرط X در آخر و زمانی که برقرار نیست و قراره از حلقه بیاد بیرون به X یک مقدار اضافه کنه ؟؟
کد:
void Main()
{int X=0 , total=0;
while(X++<=5)
total+=X++;
Cout<<total<<x;}
بستگی به کامپایلری داره که کد رو ترجمه می کنه، دلیل اش هم اینه که متاسفانه در استاندارد زبان C و ++C
مشخص نشده که یک عبارت از چپ به راست بایستی تفسیر بشه یا از راست به چپ و یا هر حالت دیگه ای.
به همین دلیل نتایج عملیاتی که ترتیب در آنها اهمیت دارند در کامپایلر های متفاوت یکسان نیست.
توصیه میشه که با شکستن عبارت به تکه های متوالی از بوجود آمدن اینگونه ابهامات جلوگیری بشه.

به همین علت بدون توجه به شیوه بکار گرفته شده در یک کامپایلر خاص، نمیشه گفت که در شرط (while(x++<=5 ابتدا
مقدار x افزایش پیدا می کند و سپس با 5 مقایسه می شود و یا ابتدا با 5 مقایسه می شود و سپس افزایش می یابد.

بدیهی است که اگر ابتدا مقایسه انجام شود، نتیجه 96، و اگر ابتدا افزایش مقدار صورت بپذیرد، نتیجه 97 است.
هیچکدام از ایندو نتیجه اشتباه نیستند، صرفا جهت تفسیر عبارت x++ <= 5 تفاوت دارد که بدلیل ابهام در
استاندارد زبان مشخص نیست که کدامیک صحیح است.
 

Apollo

Active Member
تشکر
خدایی معلوم نیست این سوالهای کنکور کارشناسی رو کی طرح میکنه آدم رو الکی سرکار میزارن سوالاشون بی سرته و بدون جوابه.:mad:
 

جدیدترین ارسال ها

بالا