Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c程序中的浮点异常_C - Fatal编程技术网

c程序中的浮点异常

c程序中的浮点异常,c,C,我在下面的代码中遇到浮点异常 int heavy_decimal_count ( int A, int B ) { char * markup = "Heavy"; int i , value; int tempA = A; int tempB = B; int reminder = 0; int sum = 0; float average = 0.00; int counter = 0;

我在下面的代码中遇到浮点异常

int heavy_decimal_count ( int A, int B )        
{        
 char * markup = "Heavy";    
 int i , value;   
 int tempA = A;   
 int tempB = B;    
 int reminder = 0;    
 int sum = 0;     
 float average = 0.00;     
 int counter = 0;    
 if( (tempA < 0) || ( tempB <0 )||( B < A ) )    
 {    
    printf(" Error -> Numbers are negative or B is less than A");     
    return 0;     
 }    
 for (  i = A ; i <= B ; i++)     
 {    
     value = i;     
     while( value > 0 )    
     {    
        printf(" the value is %d ", value );     
        counter += counter;     
        reminder = value % 10;      
        value /= 10;    
        sum += reminder;     
        average =  sum/counter ;     

    }     
    if( average > 7.0 )    
            printf(" %d \t  avg= %f\t %s\t" ,i , average , markup);   
        else     
            printf(" %d \t  avg=%f\t " ,i , average );     
}     
return 0;      
 }     
整数重小数计数(整数A、整数B)
{        
char*markup=“重”;
int i,值;
int-tempA=A;
int tempB=B;
int=0;
整数和=0;
浮动平均值=0.00;
int计数器=0;
如果((tempA<0)| |(tempB 7.0)
printf(“%d\t平均值=%f\t%s\t”,i,平均值,标记);
其他的
printf(“%d\t平均值=%f\t”,i,平均值);
}     
返回0;
}     

看起来您在下一行中被零除

平均值=总和/计数器

计数器最初定义为零

int计数器=0

并在这里更新

计数器+=计数器;//计数器保持为零

你的意思是将计数器改为1吗

计数器+=1

尽管名称不同,当您使用
/
%
0
为整数时,实际上会发生“浮点异常”。我猜它发生在这里:

average =  sum/counter ;
因为
计数器
仍然是
0
。我想你是说

counter += counter;
将来

此外,您可能希望将分区更改为

average =  (float)sum/counter ;

因此,它可以作为一个分数值而不是整数发生。

使用调试器,至少找出它发生的位置。
average =  (float)sum/counter ;