View Full Version : کمک- ارسال به تابع
f_cpuf
شنبه 25 اردیبهشت 1389, 17:06 عصر
با سلام
کسی هست که کمک کنه که چرا این برنامه این جواب را میده؟
int f(int n){
cout<<n;
}
main()
{
clrscr();
int x=-5,y=-2;
f(2*x++-3*x++);
x=-5;y=-2;
f(x + y+ ++x);
cout<<'\n';//--------------------
x=-5;y=-2;
f(2*x++-3*x++);
f(x + y+ ++x);
getch();
}خروجی قسمت اول هست: 11-2
خروجی قسمت دوم هست: 7-2
میشه توضیح بدید که چگونه محاسبه میکنه؟
مورد بعدی این که چرا مقدار داخل xو y نگه داشته میشه با این که محلی است نه استاتیک؟ و باید دوباره مقداردهی کرد؟
f_cpuf
شنبه 25 اردیبهشت 1389, 17:26 عصر
main()
{
clrscr();
int x=-5,y=-2;
int i=(x + y+ ++x);
cout<< i<<endl; // Out ==> -11
x=-5;
i=(x + y+ ++x);
cout<< i<<endl; // Out ==> -10
getch();
}
*******************************
main()
{
clrscr();
int x=-5,y=-2;
int i=(x + y+ ++x);
x=-5;
int j=(x + -2+ ++x);
cout<< i<<endl; // Out ==> -11
cout<< j<<endl; // Out ==> -10
getch();
}
چرا اینطور جواب میده؟:گریه::عصبانی++:
به نظرتوم من قاطی کردم یا این سیه؟:اشتباه::عصبانی++:
f_cpuf
شنبه 25 اردیبهشت 1389, 22:47 عصر
main()
{
clrscr();
int x=-5,y=-2;
int i=(x + y+ ++x);
cout<< i<<endl; // Out ==> -11
x=-5;
i=(x + y+ ++x);
cout<< i<<endl; // Out ==> -10
getch();
}کسی نیست که بگه چرا این نتیجش متفاوته؟ چطوری محاسبه میکنه آخه؟
:افسرده::عصبانی++:
tdkhakpur
شنبه 25 اردیبهشت 1389, 23:29 عصر
کسی نیست که بگه چرا این نتیجش متفاوته؟ چطوری محاسبه میکنه آخه؟
nt x=-5, y=-2;
int i=(x + y + ++x);
cout<< i<<endl; // Out ==> -10
x=-5;
i=(x + y + ++x);
cout<< i<<endl; // Out ==> -10
درسته نتیجه هر دو -10 میشه برای چی شما اعداد را متفاوت میگیرید؟کد پایینی یک کپی از بالای شده تغییر داخل عملگر ها هم نیست که نتیجه متفاوت دیده بشود!
f_cpuf
یک شنبه 26 اردیبهشت 1389, 00:28 صبح
{
clrscr();
int x=-5,y=-2;
int i=(x + y+ ++x);
cout<< i<<endl; // Out ==> -11
x=-5;
i=(x + y+ ++x);
cout<< i<<endl; // Out ==> -10
getch();
}
*******************************
main()
{
clrscr();
int x=-5,y=-2;
int i=(x + y+ ++x);
x=-5;
int j=(x + -2+ ++x);
cout<< i<<endl; // Out ==> -11
cout<< j<<endl; // Out ==> -10
getch();
}
چرا اینطور جواب میده؟:گریه::عصبانی++:
به نظرتوم من قاطی کردم یا این سیه؟:اشتباه::عصبانی++:
nt x=-5, y=-2;
int i=(x + y + ++x);
cout<< i<<endl; // Out ==> -10
x=-5;
i=(x + y + ++x);
cout<< i<<endl; // Out ==> -10
درسته نتیجه هر دو -10 میشه برای چی شما اعداد را متفاوت میگیرید؟کد پایینی یک کپی از بالای شده تغییر داخل عملگر ها هم نیست که نتیجه متفاوت دیده بشود!
من که -10 و-11 میده!:متعجب:
چرا اینطوریه؟ شما تو چه کامپایلری امتحان کردی؟ جواب مساوی شد. من با Turbo C++ امتحان کردم. هم 3 و هم 4.5
جالبش اینجاست که کد زیر درست جواب میده! انگار گیرش رو x++ هست:افسرده:
main()
{
clrscr();
clrscr();
int x=-5,y=-2;
int i=(x + y+ x);
cout<< i<<endl; // Out ==> -12
x=-5;
i=(x + y+ x);
cout<< i<<endl; // Out ==> -12
getch();
}
گیج شدم! :گریه::عصبانی++::افسرده:
شما نمیدونید چرا جوابها متفاوته؟
tdkhakpur
یک شنبه 26 اردیبهشت 1389, 00:56 صبح
شما نمیدونید چرا جوابها متفاوته؟
آخر دوست گرانمایه کجای کد شما با هم تفاوت داره که خروجی متفاوت بده؟
ب
f_cpuf
یک شنبه 26 اردیبهشت 1389, 01:36 صبح
آخر دوست گرانمایه کجای کد شما با هم تفاوت داره که خروجی متفاوت بده؟
ب
دوست عزیز شما تو کامپایلرتون امتحان کردید یا تنها از روی کد دارید جواب میدید؟
این برنامه رو ببینید:
#include<conio.h>
#include<iostream.h>
int f1(int n){
int i;
i=(++n-((n*n)/n)+n++);
return i;
}
int f2(int n){
return (++n-((n*n)/n)+n++);
}
main()
{
clrscr();
cout<<f1(2);// Out ==> 3;
cout<<endl;
cout<<f2(2);// Out ==> 4
getch();
}
sh4mid
یک شنبه 26 اردیبهشت 1389, 04:03 صبح
توی vc2008 جفتش 3 هست
hercool
یک شنبه 26 اردیبهشت 1389, 10:55 صبح
دوست من تغییری در دو تابعت نیست هر دو مثل هم هستن تغییری نداره اگر n اخرت پیش افزایشی بود یه چیزی ولی هر دو پس افزایشی هستند و در مرحله اول تغییری ایجاد نمی کنن و بنابراین خروجی تو تو هر دو تاشون هم 3 هست
البته برای تابع main هم باید نوع مشخص کنی
f_cpuf
یک شنبه 26 اردیبهشت 1389, 15:12 عصر
توی vc2008 جفتش 3 هستتو 2008 شاید درستش کردن!:متعجب:
شما 3 و 4.5 ندارید که امتحان کنید؟
دوست من تغییری در دو تابعت نیست هر دو مثل هم هستن تغییری نداره اگر n اخرت پیش افزایشی بود یه چیزی ولی هر دو پس افزایشی هستند و در مرحله اول تغییری ایجاد نمی کنن و بنابراین خروجی تو تو هر دو تاشون هم 3 هست
البته برای تابع main هم باید نوع مشخص کنی
شما امتحان کردید یا فقط از روی ظاهر کد جواب دادید؟:متفکر:
من هم از همین تعجب کردم! مربوط به main هم نیست.
شما نمی تونید تو 3 یا 4.5 امتحان کنید؟
نکته جابش اینجاست که اگر پیش افرایشی (n++) را بردارم جواب یکسان میده!:افسرده:
یعنی:
#include<conio.h>
#include<iostream.h>
int f1(int n){
int i;
i=(n-((n*n)/n)+n++);
return i;
}
int f2(int n){
return (n-((n*n)/n)+n++);
}
int main()
{
clrscr();
cout<<f1(2);// Out ==> 2
cout<<endl;
cout<<f2(2);// Out ==> 2
getch();
return 0;
}
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.