奇怪奇怪!我的程序出鬼了!debug版中一个bool型函数返回的是true,而在release版返回的是false!请教请教! 在DEBUG中,BOOL变量没有初始化时值为一个很大的负数,非0为TRUE,所以值为TRUE,但在RELEASE中,系统会设置为0,0为FALSE,所以返回FALSE, 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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是函数的形参 if(!right)break;有可能返回false啊。 你没有控制 k 的值,你的代码有可能进入无限循环,能返回FALSE or TRUE 已经算很幸运了 可能是浮点数比较的精度引起的.浮点数比较常用来和一个非常小的数字比较而不是直接比较...比如: float f1, f2;用ABS(f1 - f2) < 0.00001 这类的语句来做判断好一些. vcsongs:高手! 我昨天晚上10:30左右已经找出毛病了,就是你说的浮点数比较出的毛病。我的语句(f4==f5).......,当f3=4.000时,f5=int(f3)系统得到3,而f4=4,结果当然返回false了。shenyc: 我的k值其实不需要控制,不会出现死循环,具体细节在其它地方,上面我没说清楚!beck: 哥们,你没看看我的问题吗?同样的代码,同样的数据,在debug下返回true,但在release下返回的是false.我没说不能返回false GIF文件转换为BIN文件 使用toaster\wdm\filter对U盘进行控制的几个问题 ADO访问数据库问题啊,在线急等啊 是多线程还是timer?关于异步处理数据的问题,详细见题!!! 关于头文件的问题 请高手指点一下, 为什么编译报这个错? ######如 何 控 制 浏 览 器 中 的 文 本 内 容 不 被 选 中###### 经典:一个月学习字符串,总结了一点经验,请ITGG们共享!!! 寻VC++高手合作!!! 怎样在同一块区域先后显示不同的图像,求救 不知道什么情况下会出现页面错误?如何避免? about ImageList
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是函数的形参
有可能返回false啊。
浮点数比较常用来和一个非常小的数字比较而不是直接比较...
比如: float f1, f2;
用ABS(f1 - f2) < 0.00001 这类的语句来做判断好一些.
我昨天晚上10:30左右已经找出毛病了,就是你说的浮点数比较出的毛病。我的语句(f4==f5).......,当f3=4.000时,f5=int(f3)系统得到3,而f4=4,结果当然返回false了。
shenyc:
我的k值其实不需要控制,不会出现死循环,具体细节在其它地方,上面我没说清楚!
beck:
哥们,你没看看我的问题吗?同样的代码,同样的数据,在debug下返回true,但在release下返回的是false.我没说不能返回false