[英]Why my program return 5?
I study templates and I must search max element < 0. But function return 5. 我研究模板,必须搜索max <0。但是函数返回5。
#include <stdio.h>
#include <stdlib.h>
#include <ctime>
template <class Tdata, class Tnumber>
Tnumber min_max (Tdata arr[], Tnumber n)
{
int i, p = 0,max_el=0;
int a=0;
Tdata arr_help[n];
for (i=0; i<n; i++){
if (0 > arr[i]){
arr_help[a]=arr[i];
printf("\n a = %i \n",a);
a++;
};
printf("\narr_help = %i\n",arr_help[i]);
}
for (i=0;i<a;i++){
printf("\n p = %i \n",p);
if(arr_help[p]<arr_help[i+1]) p=i+1;
}
printf("\n p_bf_answr = %i \n",p);
return p;
}
If you start this code, p at the end is 5 如果您启动此代码,则末尾的p为5
int main(){
srand(time(0));
int n=5, arr_int[n],i;
//float arr_float[n];
printf("\n");
for (i=0;i<n;i++){
arr_int[i]=(int)(-(rand()%11 +1));
}
printf("\nint_min = %i\n",(min_max(arr_int,n)));
/* for (i=0;i<n;i++){
arr_float[i]=(float)(-(rand()%10));
}
printf("\nfloat_min = %i\n",((int)min_max(arr_float,n)));*/
return 0;
}
And I don't know, what I must write here. 我不知道,我必须在这里写些什么。 What details need this site? 这个网站需要什么细节?
In the last time the loop 在最后一次循环
for (i=0;i<a;i++){
printf("\n p = %i \n",p);
if(arr_help[p]<arr_help[i+1]) p=i+1;
}
if executed you compare 如果执行,您比较
if(arr_help[p]<arr_help[a]) p=a;
but arr_help[a]
was never set and is possibly beyond the array bounds of arr_help
. 但是arr_help[a]
从未设置过,可能超出了arr_help
的数组范围。 It may contain anything, thus setting p=a. 它可以包含任何内容,因此设置p = a。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.