gpt4 book ai didi

c++ - for循环的奇数输出

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

我正在使用 for 循环遍历我创建的一些数组,这些数组代表鼠标可以悬停的区域。然后,当循环确认鼠标在某个区域时,它会将迭代变量保存到一个公共(public)变量中,稍后在主函数中使用该变量来突出显示鼠标经过的区域。问题是 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 中应用了一个 Sprite ,但应用不正确,所以这是一个问题。

最佳答案

sizeof(grid_region) 的大小是 char 的倍数,而不是元素的数量。

也就是sizeof(int) * 9 ,不是九个,显然是你的 int是 8 char自从你最终达到 72 岁以来,它就很宽了。

你可以循环到< sizeof(grid_region) / sizeof(grid_region[0])或者,更好的是,进入 21 世纪并使用 std::vector , 或 std::array如果您的编译器足够时髦。

关于c++ - for循环的奇数输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20678994/

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