gpt4 book ai didi

c++ - int 值从 0 跳到 32679 没有变化

转载 作者:行者123 更新时间:2023-11-28 03:47:26 28 4
gpt4 key购买 nike

我有一个非常非常奇怪的问题,我无法弄清楚。所以你可以看看,这是我的代码;

point * findLongPaths(point * points, double threshold_distance) {
int i = 0;
int pointsAboveThreshold = countPointsAboveThreshold(points, threshold_distance);

point * pointsByThreshold = new point[sizeof(points)];
pointValues * pointsToCalculate = new pointValues[pointsAboveThreshold];
//pointValues pointsToCalculate[pointsAboveThreshold];
//point orderedPoints[pointsAboveThreshold];

while (points[i].end != true) {
point pointOne = points[i];
point pointTwo = points[i + 1];

//Check to see if the distance is greater than the threshold, if it is store in an array of pointValues
double distance = distanceBetweenTwoPoints(pointOne, pointTwo);
if (distance > threshold_distance) {
pointsToCalculate[i].originalLocation = i;
pointsToCalculate[i].distance = distance;
pointsToCalculate[i].final = pointTwo;

//If the final point has been calculated, break the loop
if (pointTwo.end == true) {
pointsToCalculate[i].end = true;
break;
} else {
pointsToCalculate[i].end = false;
i++;
}
} else if (points[0].end == true || pointsAboveThreshold == 0) {
//If there is no points above the threshold, return an empty point
if (points[0].end == true) {
point emptyPoint;
emptyPoint.x = 0.0;
emptyPoint.y = 0.0;
emptyPoint.end = true;

pointsByThreshold[0] = emptyPoint;
return pointsByThreshold;
}
}
i++;
}
i = 0;

//Find the point with the lowest distance
int locationToStore = 0;

while (pointsToCalculate[i].end != true) {

我的问题是,i 值从 0 到 32679。我最初将它设置为 j,所以它使用了与之前 while 循环中的计数器不同的计数器,但我尝试使用 i 看看它是否会产生影响。

我已经在 VC++ 和 XCode 中尝试过,并且都在这样做。但是,如果我在它前面几行放置一个断点,它会保持为零。如果我在没有任何断点的情况下运行它,它会将值更改为 32679。

这是为什么?这真的很奇怪,我不知道如何解决?

最佳答案

我注意到的一些可能有帮助的事情:

  • new point[sizeof(points)]几乎肯定是错误的 sizeof(points)不等于数组中元素的数量,而是指针的大小(通常为 4 或 8)。如果你想要 points[] 的大小要么将其作为另一个参数传递给函数,要么使用标准容器(如 std::vector<> 或任何满足您需要的容器)更好。
  • 你的 pointsToCalculate数组分配有 pointsAboveThreshold元素,然后您可以使用 i 访问它.如果i曾经超过pointsAboveThreshold (这几乎肯定会)你会溢出数组并且会发生坏事,可能包括覆盖 i .如果没有更多信息和细节,我会怀疑这是您的问题。
  • 何时distance > threshold_distancepointTwo.end == false你递增 i两次(这可能是有意的,但想以防万一)。
  • else if (points[0].end == true...)永远不可能像外层一样真实 while (points[i].end != true)将是假的,循环永远不会进入。我不确定您的预期逻辑,但我怀疑您希望在 while 循环之外进行此操作。

关于c++ - int 值从 0 跳到 32679 没有变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7132551/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com