在C中遍历数组时陷入无限循环

问题描述 投票:2回答:1

我正在尝试运行此方法,该方法试图确定数组中不重复的数字数量,并且在遍历数组时,我陷入了无限循环。 “ Hello”无限打印。为什么会这样?

// function to determine the amount of non repeated numbers
int nonRepeatedNumbers(int arr[], int size)
{
    int i = 0;
    int total = 0;
    printf("%d\n", arr[0]);
    while(i<size-1){
        printf("%s\n", "HEllo");
        total++;
        if (i = 0)
        {
            if (arr[i] != arr[i + 1])
            {
                total++;
            }
        }
        else
        {
            if (arr[i] != arr[i + 1] && arr[i] != arr[i - 1])
            {
                total++;
            }
        }
        i=i+1;
    }
    printf("%d\n", total);
    return total;
}
c loops infinite-loop
1个回答
3
投票

if (i = 0)每次您将其设置为0。应该是i

[通过遍历循环每次打印if (i == 0)i来查看发生了什么,以及为什么从未满足条件的原因,您可能已经发现了这一点。


-1
投票

不相关的建议:在末尾加上++而不是i = i + 1,您也可以使用-大小部分。第二个if似乎仅是一次运行一次,如果是,则将其放在循环之前,但是我不确定,但这就是我所看到的。

我不太了解C语言,但我希望这些有助于使代码看起来更好的有用技巧,并能以较小的方式为您提供帮助!

© www.soinside.com 2019 - 2024. All rights reserved.