C 卡在嵌套的do{for{if循环中

C 卡在嵌套的do{for{if循环中,c,loops,C,Loops,因此,有了这段代码,程序就挂断了,不会退出循环,printfs只是为了调试而放入的,它们不是程序的一部分。我对编程非常陌生,所以我不确定我遗漏了什么,逻辑似乎应该可以工作。非常感谢您花时间查看这一点和您的帮助 do { intialcollide = 0; for(i=0; i<11; i++) { if(i != currentObj) { if(object[currentObj].new_loctX ==

因此,有了这段代码,程序就挂断了,不会退出循环,printfs只是为了调试而放入的,它们不是程序的一部分。我对编程非常陌生,所以我不确定我遗漏了什么,逻辑似乎应该可以工作。非常感谢您花时间查看这一点和您的帮助

do
{
    intialcollide = 0;
    for(i=0; i<11; i++)
    {
        if(i != currentObj)
        {
            if(object[currentObj].new_loctX == object[i].new_loctX && object[currentObj].new_loctY == object[i].new_loctY)
            {
                intialcollide = 1;
            }
            else
            {
                intialcollide = 0;
            }
        }
        printf("%d\n", intialcollide);
    }
}while(intialcollide != 1 || i != 10);
printf("Collide? %d", intialcollide);
do
{
内卤化物=0;

for(i=0;i在for循环的末尾,
i
将始终等于11。也许您认为它将等于10?无论如何,将
i
与while条件下的任何东西进行比较是没有意义的,因为您知道它总是相同的值。

添加一个“break;”无论何时将intialcollide设置为1,for循环都会在命中while循环检查之前将值重置为0。

我不清楚您到底在做什么,但问题可能是
while(intialcollide!=1 | | I!=10)
,似乎
I!=10
总是正确的。使用调试器逐步检查代码“所以我不确定我错过了什么”--睡眠?咖啡?”逻辑似乎应该是可行的"--对于任何实际查看过它的人来说都不是。我的理解是,我最初将等于0,然后每次它重复for循环命令时都会递增。一旦i=10,for循环中的condition语句将不再为真,我将不再小于10,它将退出for循环。这段代码的思想是我正在检查一个对象s相对于10个其他对象的位置如果其位置等于其他对象之一,则intialcollide函数需要等于1,do while循环在那里,这样,如果它与一个对象发生碰撞,则intialcollide不会被对象2、3、4覆盖……”“我的理解”--你不是来寻求帮助的吗?你被告知到底发生了什么事。试着阅读并理解这个答案……你的条件是
我补充到这一点,为了澄清你的误解,“一旦i=10……不再是真的”是假的,因为你的条件是i