ورود

View Full Version : سوال: خروجی این برنامه با حساب من 3 می شود اما جواب 4 است چرا؟



complexcoding
شنبه 28 مرداد 1391, 19:23 عصر
با سلام
سوال اینه : خروجی برنامه زیر چیست؟
int *fn(int *a , int i){
int *x;
for (x=a;x<a+i;x++)
if(*x>0) return x;
return Null;
}

main()
{
int b[7]={-3,0,4,-2,6,5,-4};
printf("%d",*fn(b,7));
}

دوستان با توجه به اینکه من جواب رو 3 در آوردم و کتاب 4 رو جواب می دونه من فکر می کنم در حلقه For ایراد داشته باشم پس استدعا می کنم بخش حلقه رو دقیق توضیح بدین یا خط به خط ...
خیلی ممنون

tdkhakpur
شنبه 28 مرداد 1391, 19:50 عصر
اینجا رو نگاه کن
if(*x>0) return x;

جاهای دیگه تقریبا برای نتیجه کشکه, اساس برگشت شما از حلقه و در کل تابع اینه که مقدار اولین x بزرگتر از 0 باشه و شما توی آرایتون یه دونه 4 داریده که حلقه رودتر از همه بهش میرسه که بزرگتر از 0 هست بنابر این تفاصیل باید عدد 4 برگشت بخوره. اگه عدد 4 داخل ارایه نداشیتد 5 برگشت میخوره اگه اونم نباشه null fv'aj ldo,vi.