很让人生气,那位兄弟遇到过类似情形,解释一下

robinsun 2002-05-31 04:11:39
程序执行时,在一个if(*b==0)语句行说浮点益处错误,
我在其上加了if(*b==0) ShowMessage(*b);竟然顺利通过执行!其他没有改任何代码,ShowMessage删掉,错误依旧!
在*b所指的地址变量c前,加上if(c==0) ShowMessage(c);竟然也能顺利通过执行!
ShowMessage竟然可以屏蔽错误!
那位兄弟遇到过类似情形,解释一下。
...全文
37 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiger_qi 2002-05-31
  • 打赏
  • 举报
回复
jsp说的有道理,专家的意见应该考虑一下:)
robinsun 2002-05-31
  • 打赏
  • 举报
回复
b是double *,c是double。和程序稍不同,这里只是拿来作个例子。b是一个函数的传递参数,用&c调用的。
这是一个光路计算的程序,在输入值正常的情况下,计算是没有出错的。我只是输入了输入值较大的情况,计算是却是浮点益处错误。
不解的是ShowMessage竟然把错误屏蔽掉了?
我不懂电脑 2002-05-31
  • 打赏
  • 举报
回复
看来你的b是float浮点数是不精确的最好不要这样比较。
jishiping 2002-05-31
  • 打赏
  • 举报
回复
你这儿的b,c是什么类型啊?不过有一点可以肯定,你没有给程序中的变量c
或是什么其它的赋值,就访问它的值了。因为没有赋值,它里面的是谁机值,
由编译器随机产生,就会有这种问题。
pp616 2002-05-31
  • 打赏
  • 举报
回复
???b是什么类型的啊???
WhyAndAnswer 2002-05-31
  • 打赏
  • 举报
回复
数值型是可以用ShowMessage显示的。如:int i=0; Showmessage(i);
bearbaba 2002-05-31
  • 打赏
  • 举报
回复
我也遇到过相同的事情,不过是在C#里,如果都有这个问题,是不是windows的底层API有问题啊?

参见源贴
http://www.csdn.net/expert/topic/768/768462.xml?temp=.9931299
LuoGD 2002-05-31
  • 打赏
  • 举报
回复
你的c是float的,还是AnsiString?
你用if(c==0)说明c是数值型,但ShowMessage(c);说明c是Ansistring,
你的程序应该不是这样的吧。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧