在DEBUG中,BOOL变量没有初始化时值为一个很大的负数,非0为TRUE,所以值为TRUE,但在RELEASE中,系统会设置为0,0为FALSE,所以返回FALSE,

解决方案 »

  1.   

    zzh,你说的有道理,但我的问题应该不在这,请看代码:
             bool right;
    int k;
    k=0;
    right=true;
    float f1,f2; while(1)
    {
    f1=pDoc->m_TrackArray[it].CurveRightScaleArray[k];
    f2=pDoc->m_TrackArray[it].CurveLeftScaleArray[k];
    if(f2 == -999.0)break;
            float f3=log10(f1/f2);
            int f4=pDoc->m_TrackArray[it].Split_Num;
            int f5=int(f3);
            right=(f4 == f5)?true:false;
    if(f2 <= 0.0)right=false;
    if(f1 <= 0.0)right=false;
    if(!right)break;
    k++;
    }
    return right;
    right是返回值,it是函数的形参
      

  2.   

    if(!right)break;
    有可能返回false啊。
      

  3.   

    你没有控制 k 的值,你的代码有可能进入无限循环,能返回FALSE or TRUE 已经算很幸运了
      

  4.   

    可能是浮点数比较的精度引起的.
    浮点数比较常用来和一个非常小的数字比较而不是直接比较...
    比如: float f1, f2;
    用ABS(f1 - f2) < 0.00001 这类的语句来做判断好一些. 
      

  5.   

    vcsongs:高手!
      我昨天晚上10:30左右已经找出毛病了,就是你说的浮点数比较出的毛病。我的语句(f4==f5).......,当f3=4.000时,f5=int(f3)系统得到3,而f4=4,结果当然返回false了。
    shenyc:
       我的k值其实不需要控制,不会出现死循环,具体细节在其它地方,上面我没说清楚!
    beck:
       哥们,你没看看我的问题吗?同样的代码,同样的数据,在debug下返回true,但在release下返回的是false.我没说不能返回false