我现在只用 C++/CLI 和 C++ 开发了几个月,但在我看来,编程语言在这个问题上应该无关紧要。
在下面的代码行中,double k = (yEnd - yStart) / (xEnd - xStart);
似乎没有执行。
//double k = 1.0;
if (xEnd - xStart == 0)
{
selected = true;
return true;
}
// Checks if Y-coordinate corresponds to X-coordinate
else
{
// Calculating the slope of the line
double k = (yEnd - yStart) / (xEnd - xStart);
if (fabs(y - (yStart + k * (x - xStart))) < (double)selectionTolerance)
{
selected = true;
return true;
}
}
我尝试使用 F11 逐行调试它并且还设置了断点,尽管这些断点在从所述行运行调试器时移动到if (fabs(y - (yStart + k * (x - xStart))) < (double)selectionTolerance)
它之后。
我已经检查了 Visual Studio 的选项以不跳过属性/操作,但它也没有帮助。当调试器在 if 处停止程序时,我看不到 的任何值k
,但可以毫无问题地看到所有其他值(除了 char selectionTolerance 和 bool selected,它们都是 double 的)。
感谢您的帮助,我在网上和 stackoverflow 上搜索了很长时间,但找不到像这样简单(并且可能是一般性)的行的问题。
更新:
感谢 David Yaw 和 GK,我能够看到 k 的值。我仍然对这里说明的一个问题感到困惑:http: //i.imgur.com/MyVGTwJ.png(还不能发布图片)
即使yEnd
, yStart
, xEnd
,xStart
都是类型double
并且具有如上图所示的值,但当程序在执行之前在第 254 行停止时k=ydif/xdif;
,k
等于0.0000000000000000
。我添加了三行
双 ydif= (yEnd-YStart);
双xdif=xEnd-xStart;
k=ydif/xdif;
看看 ifk
会根据需要计算,但在再次按 F11 后它得到相同的值(程序在第 256 行停止)。
我在这里发现了一个与跳跃断点问题有关的问题:Visual Studio breakpoints beingmoved
计算k
我尝试的方式有什么问题,正确的方法是什么?