سلام
میشه برای من توضیح بدین چرا جواب عبارت زیر وقتی کامپایل میکنم 5 میشه از نظر من جواب باید 9 باشه .
من با tcc کامپایل کردم
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام
میشه برای من توضیح بدین چرا جواب عبارت زیر وقتی کامپایل میکنم 5 میشه از نظر من جواب باید 9 باشه .
من با tcc کامپایل کردم
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
چه سوالی پرسیدید بسیار بسیار عجیب هست!!! بنظر من هم باید 9 بیاد
و اگر در بورلند و VS عبارت به همان صورتی که دوستمون نوشته, نوشته بشه جواب 5 و اگر بصورت زیر نوشته بشه 9 میاد!!!!
و اگه خودمون هم بخوایم مقدار عددی بصورت پایین بدیم جواب 9 می شه!!کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
d=6*2/2*2-3;
Last edited by Mehran NZ; 11-01-2009 at 22:58.
دقیقا دوستمون درست میگه
تمام مشکل سر c ++ آخریست یعنی اگه به جا ++c , c بزاریم جواب میشه 11
ولی ++c میزارم باز میشه 9
جدا هم بنویسیم درست میشه
حالا چرا این جوری میشه!!!!!!!
جواب این موضوع رو با معرفی اپراتور تک اپرتندی پلاس پلاس شروع میکنم.
این دستور شامل دو بخش می شه
preincrement: ++x
این دستور قبل از آغاز عملیات در سطر متغیر را یک واحد اضافه کرده و سپس عملیات رو انجام می ده و حاصل رو اساین می کنه
در واقع در سوال شما در خط سوم ابتدا مقدار سی برابر 3 قرار داده می شه و بعد حاصل عبارت حساب میشه. اگر شما در یک خط از یک متغیر چند بار استفاده کنید و یکی از انها را به این شکل پلاس پلاس کنید در نهایت تغییر در همه جا اعمال می شه.
++postincrement: x
این عملگر پس از انجام محاسبات و پایان سطر بازگشته و مقدار متغیر رو یکی زیاد می کنه. و به خط بعد می ره.
دلیل تفاوت بین دو کدی که مهران عزیز هم کامپایل کرده مشخص شد...
عجب چیز مسخره ای مگر همچین چیزی ممکن هست؟ دو کدی که در c# و c++ نوشته شدند - c# عبارت 9 و c++ عبارت 5 رو نتیجه می ده!!!
(if رو برداشتم که در c# هم کامپایل شه ولی در اصل موضوع هیچ فرقی نداره)
کد در c#
کد در c++کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
كامپايلر من مقدار 9 رو چاپ مي كنه(microsoft visual c++6)
اون 2 تا كامپايلر(سي شارپ و خودم) مال يه شركت معتبر هستن(مايكروسافت) ولي اون نه!
Last edited by mahdi7s; 12-01-2009 at 00:01.
Microsoft Visual Studio 2008 هم مقدار 5 رو چاپ می کنه
به هر حال باگی هستش که پیدا شده و کاریش هم نمی شه کرد
فعلا
میشه بیشتر توضیح بدین؟!
من دقیق نگرفتم چی شد
عبارت ما به خاطر اینکه c++ آخرش داره از سمت راست محاسبه میشه؟
اگه c خالی بود یا ++c از چپ شروع میشد
مرسی
اما به نظر من هنوز هم این موضوع باگ و مشکل نیست اگه توضیحی که دادم بخونی متوجه می شی. در خطی که عبارات نوشته شده قبل از انجام هر محاسبه ای مقدار سی برابر 3 قرار داده می شه و بعد سایر محاسبات انجام می شه.توی کامپایلر های غیرمعتبر هر جا ++ باشه با +1 عوض می شه و دلیل این اشکال هم همینه ...
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)