0

我正在尝试比较两个字符串数组。每当我进入 if 语句内的 while 循环时,我就会陷入无限循环,因为即使循环内有一个迭代器,它也不会递增。我cout<< finder;在循环中只是为了查看查找器在什么位置,并且它永远不会增加到零以上。如果有人可以提供帮助,我将不胜感激。

if (memory[p] == "J")
    {
        if (is_number(memory[p+1]))
        {
            worker = atoi(memory[p+1].c_str());
            p = worker;
            continue;
        }
        else
        {
            int finder = 0;
            while (memory[p+1] != Symtablelab[finder])
            {
                cout << finder;
                finder = finder + 1;
            }

            if (memory[p+1] == Symtablelab[finder])
            {
                int k = Symtablepos[finder];
                worker = atoi(memory[k].c_str());

                p = worker;
                continue;
            }
        }
    }
4

2 回答 2

2

你说finder永远不要超过零。它是否打印finder = 0?如果有,就意味着

memory[p+1] = Symtablelab[1]

就在第一次迭代之后,所以 while 循环被终止并停留finder在 1。

编辑 如果你说,它finder = 0在 while 语句中连续打印,那么你可能if (memory[p] == "J")在外部forwhile(循环)语句中。

于 2012-09-17T04:53:17.370 回答
1

如果它连续打印 finder 并且它是 0,那么我必须询问您发布的整个代码片段是否包含在您没有发布的 while 语句中。如果它是陷入无限循环的循环,那么您发布的语句中包含的while循环将不会增加finder,这绝对没有意义。

或者另一种可能性是 Symtablelab 已经覆盖了 '[' ']' 运算符。如果这些事情都不是真的,那么一些令人难以置信的事情正在发生。

于 2012-09-17T05:20:48.693 回答