abs()不能在Xcode上工作?

问题描述:

我收到了来自标准库abs()的错误值。 在下面的示例中,最小值& max被正确计算为-18635和3402,但absMax产生3402,所以它应该是18635.应该这样工作还是我犯了一个错误?abs()不能在Xcode上工作?

double NormalizeWaveData(SInt16 *inData, long inlength) 
{ 
    int maxAmp = 0, minAmp=0, absMax=0; 
    for(long i=0; i<inlength; i++) 
    { 
     if(inData[i] > maxAmp) 
      maxAmp = inData[i]; 
     if(inData[i] < minAmp) 
      minAmp = inData[i]; 

     if(abs(inData[i]) > absMax) 
      absMax = inData[i]; 

    } 
... 
+0

这是C,C++或Objective-C?另外,你从哪里获得你定义的'abs'(即它是一个自定义定义还是你从标准库头中获得)? – 2013-02-27 11:04:28

+0

Xcode是一个IDE,请按照Paul R – 2013-02-27 11:07:38

+0

@CRDave的要求用正确的语言重新标记*请阅读你的评论*问题是数据类型abs是int,因此可能无法用于int *这是你想说的...! ! – 2013-02-27 11:13:59

您需要使用

if(abs(inData[i]) > absMax) 
     absMax = abs(inData[i]); 
+1

谢谢Anoop,我愚蠢的错误! – 2013-02-27 11:23:36

+1

更多解释:您将absMax设置为-18635(而不是“abs()”值),那么当计算3402时,该值更大。 – cjk 2013-02-27 11:25:48

+0

@cjk:没错。我在上面提到了同样的评论,但忘了在这里提到:) – 2013-02-27 11:30:18