逻辑无误,但确实出错了,出错原因在于变量之前被修改过,已经不是理想中的那个变量值了
2008-12-22 21:58
393 查看
/*
if(t_dy<dy)
dy=t_dy;
s2_y=dy;
w0=w4;
e.x=w2.x;
e.y=w2.y-w2.ry+dy/2;
e.rx=w2.rx;
e.ry=dy/2;
e.self_intersect.clear();
出现逻辑错误: e.y=w2.y-w2.ry+dy/2; e.ry=dy/2; 因为dy刚刚被修改过 if(t_dy<dy) dy=t_dy; 所以这里的dy有可能已经被改变了 不是原来的dy了,所以出现错误
修改如下: e.y=w2.y-w2.ry+s1_y/2; e.ry=s1_y/2;
*/
其中s1_y 为之前保存的dy值
调试分析时,按道理来说错误就出在这一段的对e赋值的位置
# if(t_dy<dy)
# dy=t_dy;
#
# s2_y=dy;
#
#
#
#
# w0=w4;
#
# e.x=w2.x;
# e.y=w2.y-w2.ry+dy/2;
# e.rx=w2.rx;
# e.ry=dy/2;
#
# e.self_intersect.clear();
可是 对e赋值逻辑上是正确的啊,那么问题出现在什么地方呢?这是很奇怪也很让人苦恼的一件问题
其实,虽然逻辑是正确的,但是还有一种出错可能
那就是: 虽然赋值的语句,逻辑没有错误,但是还有一种可能------此段位置中的变量是否是想像中的变量呢
,变量的值在此之前有没有被改变过?
经分析: 错误原因就是dy的值之前被修改过,所以导致了出现错误
总结
查错思路:
若从总体上判断某一段位置存在错误,则应从以下两方面进行考虑
(一):这一段有没有逻辑错误,若有则改正之
(二):若没有逻辑错误,则查看各个变量是否之前被修改过,若是,则进一步判断理论是是应该使用修改后的变量值还是修改之前的变量值-----也就是说问题很可能出在变量值的身上
if(t_dy<dy)
dy=t_dy;
s2_y=dy;
w0=w4;
e.x=w2.x;
e.y=w2.y-w2.ry+dy/2;
e.rx=w2.rx;
e.ry=dy/2;
e.self_intersect.clear();
出现逻辑错误: e.y=w2.y-w2.ry+dy/2; e.ry=dy/2; 因为dy刚刚被修改过 if(t_dy<dy) dy=t_dy; 所以这里的dy有可能已经被改变了 不是原来的dy了,所以出现错误
修改如下: e.y=w2.y-w2.ry+s1_y/2; e.ry=s1_y/2;
*/
其中s1_y 为之前保存的dy值
调试分析时,按道理来说错误就出在这一段的对e赋值的位置
# if(t_dy<dy)
# dy=t_dy;
#
# s2_y=dy;
#
#
#
#
# w0=w4;
#
# e.x=w2.x;
# e.y=w2.y-w2.ry+dy/2;
# e.rx=w2.rx;
# e.ry=dy/2;
#
# e.self_intersect.clear();
可是 对e赋值逻辑上是正确的啊,那么问题出现在什么地方呢?这是很奇怪也很让人苦恼的一件问题
其实,虽然逻辑是正确的,但是还有一种出错可能
那就是: 虽然赋值的语句,逻辑没有错误,但是还有一种可能------此段位置中的变量是否是想像中的变量呢
,变量的值在此之前有没有被改变过?
经分析: 错误原因就是dy的值之前被修改过,所以导致了出现错误
总结
查错思路:
若从总体上判断某一段位置存在错误,则应从以下两方面进行考虑
(一):这一段有没有逻辑错误,若有则改正之
(二):若没有逻辑错误,则查看各个变量是否之前被修改过,若是,则进一步判断理论是是应该使用修改后的变量值还是修改之前的变量值-----也就是说问题很可能出在变量值的身上
相关文章推荐
- "Java之所以能跨平台,本质原因在于jvm不是跨平台的"如何理解?
- 明明已经引用这个类,可是代码里面仍然让我重新创建这个变量的原因???
- C# struct的陷阱:无法修改“...”的返回值,因为它不是变量
- 内部函数引用外部函数的同名变量或者全局变量,并且对这个变量有修改的报错原因
- 实达已经不是那个实达,而叶成辉还是那个叶成辉
- sqlserver如何在不删除原来内容的情况下修改修改id为自增(默认之前的id虽然不是自增但是实际是按序排列的)
- php如何在运行phpunit之前修改一些必要的环境变量
- eclipse 用ctrl+左键去查看一个变量的声明之后,有没有快捷键返回之前点的那个位置
- C# struct的陷阱:无法修改“...”的返回值,因为它不是变量
- C# struct的陷阱:无法修改“...”的返回值,因为它不是变量
- android的2.3.7 rom修改调试与logcat看到的出错信息的可能原因与解决(补充中...)
- 未操作的变量值自动修改--强制类型转换导致变量覆盖
- 使用xcode调试代码的时候进入断点显示变量全是nil,我用NSLog输出那个变量却是有值的,这个是什么原因呢
- HTTP 头已经写入到客户浏览器。任何HTTP 头的修改必须在写入页内容之前。
- CS1612: 无法修改“¡°System.Collections.Generic.List.this[int]””的返回值,因为它不是变量。【C# 语言中 struct 的陷阱】
- mysql 不是外部内部命令的解决方法(修改环境变量)
- linux 反汇编分析变量地址,直接修改二进制文件中变量值
- 青涩已成屌丝 小霸王已经不是那个小霸王(转载)
- 在printf()函数中修改变量值可能导致结果出错
- 在创建实例变量的时候用Set,List,Map等接口声明类型而不是用具体的子类声明的原因之代码重构