来自 for 循环的奇数输出
Odd output from a for loop
我正在使用 for 循环来迭代我创建的一些数组,这些数组表示鼠标可以悬停的区域。然后,当循环确认鼠标位于某个区域中时,它会将迭代变量保存到公共变量中,稍后在 main 函数中使用该变量来突出显示鼠标所在的区域。问题是 for 循环没有为第一次迭代提供正确的值。
{
//mouse offsets
int x = 0, y = 0;
//if mouse moves
if (event.type == SDL_MOUSEMOTION)
{
//get the mouse co-ords
x = event.motion.x;
y = event.motion.y;
for (int grid = 0; grid <= sizeof(grid_region); grid++)
{
if ((x > grid_region[grid].x) && (x < grid_region[grid].x + GRID_WIDTH) && (y > grid_region[grid].y) && (y < grid_region[grid].y + GRID_HEIGHT))
{
//set highlight region
highlight = grid;
}
}
}
}
grid_region是通过"int grid_region[9];"制作的,奇怪的部分是,当我稍后做一个打印语句以查看"突出显示"是什么时,它在grid_region[0]中是打印72。迭代变量怎么可能在循环中的任何一点变成 72???这里有任何帮助吗?我后来使用突出显示在grid_region中应用精灵,但它应用不正确,所以这是一个问题。
sizeof(grid_region)
的大小是char
的倍数,而不是元素的数量。
也就是说,它是 sizeof(int) * 9
,而不是 9,显然你的int
是 8 char
s 宽,因为你最终在 72 岁。
你可以循环到< sizeof(grid_region) / sizeof(grid_region[0])
或者更好的是,步入21世纪并使用std::vector
,或者如果你的编译器足够时髦,std::array
。
相关文章:
- 遇到此问题时遇到困难:允许用户输入数组的值并使用 for,而循环也输出输入的最大数字
- 为什么即使使用 for 循环遍历我的向量,它也没有输出到控制台?(C++)
- 如何修复输出日志中的"EnableInput can only be specified on a Pawn for its Controller"错误
- 如何在 c++ 中使用 for 循环输出矢量中的所有对象
- 我将如何保存此 for 循环的输出
- 尝试使用嵌套的 for 循环进行某些输出
- 无法在 for 循环中的 pow 函数上输出答案
- For-Loop帮助获得错误的输出
- 为什么每次for循环的输出都完全相同
- 如何使用 for 循环将元素加载到我的每个数组中,然后将每个数组的总和输出到一个 sum 数组中
- 为什么每次“for”迭代都会输出 4 次
- 将在 C++ 中输出多维数组内容的 for 循环的结构是什么
- 我无法理解为什么输出在这个 for 循环中出现 10
- for 循环中的迭代次数错误.也得到意想不到的输出
- 来自 for 循环的奇数输出
- 尝试使用for循环输出10行
- for循环错误地输出指数
- Clang 输出错误"no matching construct for initialization"
- 嵌套For循环和输出星号
- C++For循环初学者输出错误