PDA

View Full Version : ++ dev c



bahram fard
دوشنبه 31 خرداد 1389, 01:32 صبح
به چه دلیل اگر i را صفر بگیریم و خط زیر را اجرا کنیم در ++ dev c یکی بیشتر از ++c های دیگر نشان میدهد . لطفا راهنمایی بفرمایید.

cout << ++i + ++i + ++i

tdkhakpur
دوشنبه 31 خرداد 1389, 22:16 عصر
کدهای فوق یا مشابه به نوع تفسیر کامپایلر بستگی دارد یعنی هر کامپایلری میتواند برای خود استانداردی داشته باشد و دستورات را با توجه به اون استاندارد مخصوص به خود تفسیر کند.
و کسی هم نمی تواند ادعا کند که کدام درست هست و کدام غلط به هرصورت میتواند در هر دو متفاوت باشد و درست هم هست.

Salar Ashgi
پنج شنبه 03 تیر 1389, 18:01 عصر
همانطور tdkhakpur (http://www.barnamenevis.org/forum/member.php?u=99732) عزیز ذکر کردن ، هر کامپایلر واسه خودش یکسری اصول و قواعدی داره !

ولی معمولا قوانین و Fact های زبان برنامه نویسی تو تمام کامپایلرها ثابته !

قانونا مقدار خروجی این عبارت باید 9 باشه ! (اگه دلیلشو خواستید بگید توضیح بدم)

اجرای برنامه تو برلند در عکس ضمیمه .

bahram fard
یک شنبه 06 تیر 1389, 19:17 عصر
همانطور tdkhakpur (http://www.barnamenevis.org/forum/member.php?u=99732) عزیز ذکر کردن ، هر کامپایلر واسه خودش یکسری اصول و قواعدی داره !

ولی معمولا قوانین و Fact های زبان برنامه نویسی تو تمام کامپایلرها ثابته !

قانونا مقدار خروجی این عبارت باید 9 باشه ! (اگه دلیلشو خواستید بگید توضیح بدم)

اجرای برنامه تو برلند در عکس ضمیمه .

با تشکر از دوستان بخصوص salar_cpp_cs ، بنظر من جواب 3+2+1 درست است. اگر دلیل جواب عدد 9 را توضیح دهید خیلی ممنون میشوم (مخصوصا منطق الگوریتم ++DEV C)

saleh.hi.62
یک شنبه 06 تیر 1389, 19:38 عصر
من توی eclipse اجرا کردم و جواب ۷ داد !

منم خیلی برام جالب بدونم چرا ۹ میشه !!!

Salar Ashgi
یک شنبه 06 تیر 1389, 20:50 عصر
اگر دلیل جواب عدد 9 را توضیح دهید خیلی ممنون میشوم

بنظر من جواب 3+2+1 درست است.


همه افراد تو نگاه اول این جواب رو میگن ، درحالیکه یه نکته ظریفی توی کار هست :

اونم اینکه دستور cout در ارزیابی عملوند های پیش/پس افزایشی/کاهشی پس آنکه مقدار تمام متغیر

ها را مشخص کرد ، همه متغیر مقدارشان مقدار نهایی متغیر آخر خواهد بود .

توضیح در عکس ضمیمه .

بعنوان مثال اگه با الگوریتم فوق الذکر بریم جلو ، خروجی کد زیر 8 خواهد بود .



#include <iostream>
#include <conio>
int main(){
int i=1;
cout<<(i++)*(++i)*(i--)<<endl;
getch();
}

saleh.hi.62
یک شنبه 06 تیر 1389, 21:21 عصر
پس چرا توی eclipse جواب ۷ میده؟

Salar Ashgi
یک شنبه 06 تیر 1389, 21:34 عصر
پس چرا توی eclipse جواب ۷ میده؟

اولش هم گفتم ، ممکنه این امر بیشتر به نحوه پیاده سازی کامپایلرها بستگی داشته باشه .

من این خروجی رو تو برلند تست کردم .

sayeh1991
دوشنبه 07 تیر 1389, 08:40 صبح
پس چرا توی eclipse جواب ۷ میده؟

تازه warningهم میده...

friendchp
دوشنبه 07 تیر 1389, 09:44 صبح
سلام
من هم در codeblock با
که ماله gnu رو داره اونم آخرین ورژن جواب نهایی رو 7 دریافت کردم
به نظر من استاندارد منظور شده همین که هفت باشه
یعنی 1+2+3

...StacK...
دوشنبه 07 تیر 1389, 16:02 عصر
سلام
من هم در codeblock با
که ماله gnu رو داره اونم آخرین ورژن جواب نهایی رو 7 دریافت کردم
به نظر من استاندارد منظور شده همین که هفت باشه
یعنی 1+2+3

1+2+3 چه ربطی به 7 داره؟؟
----------------------------------------------

تو visual c++ 2005 هم جواب 9 بود.

تصور من براین هست که عملگرهای افزایشی-کاهشی تقدمشون بالاتر از + و -...هستش.

Salar Ashgi
دوشنبه 07 تیر 1389, 16:34 عصر
1+2+3 چه ربطی به 7 داره؟؟


حرف ، حرف حسابه !