ورود

View Full Version : عملگر ++



esmit61
سه شنبه 16 فروردین 1390, 12:54 عصر
سلام
خروجی دستور زیر میشه 0
int x=10,k
k=x++ -x
cout <<k
چجوری میشه این رو توجیه کرد. در صورتی که خروجی دستور زیر میشه -1
int x=10
cout << x++ - x
منظورم اینه که چرا نتایج این دو برنامه تفاوت دارند.به نظر من دومی درسته.این رو میدونم که عبارات در cout از راست به چپ ارزیابی می شوند. کامپایلر مورد استفاده C++ Builder هست
ممنون

voiceoffox
سه شنبه 16 فروردین 1390, 13:24 عصر
ا ... مگه میشه ؟! :گیج: من این دو کد رو تو Turbo C++ 4.5 اجرا کردم و نتیجه هر 2 صفر بود .... ! :متفکر:

حالا در مورد شما رو (وکامپایلر شما رو) دیگه نمیدونم ....

ولی بهتره نگیم این یک خطای و توجیه پذیر نیس .... بهتره اسمشو بزاریم انتخاب !!! این خود برنامه نویس هس که باید منطق برنامه رو درست تنظیم کنه .

موفق باشین و خدافظ .

esmit61
سه شنبه 16 فروردین 1390, 14:44 عصر
آره دیگه. شده مهندس. من تعجب میکنم که مگر شرکتهایی که کامپایلر رو پیاده سازی میکنند، استانداردها رو رعایت نمی کنند. بالاخره یک استاندارد برای زبان C++ وجود داره.
توی Turbo C++ 1 هر دو برنامه مقدارش میشه -1 !!!

m.soleimani
سه شنبه 16 فروردین 1390, 15:31 عصر
سلام
خروجی دستور زیر میشه 0
int x=10,k
k=x++ -x
cout <<k
چجوری میشه این رو توجیه کرد. در صورتی که خروجی دستور زیر میشه -1
int x=10
cout << x++ - x
منظورم اینه که چرا نتایج این دو برنامه تفاوت دارند.به نظر من دومی درسته.این رو میدونم که عبارات در cout از راست به چپ ارزیابی می شوند. کامپایلر مورد استفاده C++ Builder هست
ممنون

توی ویژوال استدیو که پاسخ 0 هست در کل کامپایلر ++devC در حال حاضر منطقی‌تر هست برای استفاده موفق باشید./




#include<iostream>
#include<conio.h>
usingnamespace std;
int main(void)
{
int x = 10;
cout << x++ - x << endl;
system("pause");
return 0;
}

esmit61
سه شنبه 16 فروردین 1390, 17:12 عصر
مگر شرکتهایی که کامپایلر رو پیاده سازی میکنند، استانداردها رو رعایت نمی کنند. بالاخره یک استاندارد برای زبان C++ وجود داره.

CPPDeveloper
سه شنبه 16 فروردین 1390, 21:26 عصر
به این می گن undefined behaviour، چون در + و - هیچ sequence point (http://en.wikipedia.org/wiki/Sequence_point) وجود نداره این مسأله پیش می آد،

returnx
سه شنبه 16 فروردین 1390, 22:27 عصر
در Borland C++ هم نتیجه هر دوتا صفر بود...

esmit61
چهارشنبه 17 فروردین 1390, 11:55 صبح
به این می گن undefined behaviour، چون در + و - هیچ sequence point وجود نداره این مسأله پیش می آد،
ممنون. بسیار عالی بود