Я использую цикл for для итерации через некоторые массивы, которые я создал, представляющие области, над которыми может нависнуть мышь. Затем, когда цикл подтверждает, что мышь находится в области, она сохраняет переменную итерации общедоступной переменной, которая используется позже в основной функции, чтобы выделить область, в которой находится мышь. Проблема в том, что цикл for не дает правильного значения для первой итерации.Нечетный вывод из цикла 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, и он применяется неправильно, так что это проблема.
Одна из проблем, которые я вижу, - это тест во внешнем цикле, вероятно, это будет 'grid