我从标准库abs()获取的值不正确。 在下面的例子中,min& max被正确地评估为-18635和3402,但absMax导致3402,所以它应该是18635.这应该工作,还是我犯了错误?
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 :(得分:7)
您需要使用
if( abs(inData[i]) > absMax)
absMax = abs(inData[i]);