我的 c++ 数组值不想改变,它输出无限循环

Posted

技术标签:

【中文标题】我的 c++ 数组值不想改变,它输出无限循环【英文标题】:My c++ array value don't want to change, it output infinite loop 【发布时间】:2019-05-08 17:27:44 【问题描述】:

通常,如果line[num]是'>',它必须给num加1才能传递给数组的下一个字符,并且必须输出相应的字符,但它会无限输出符号'>'。为什么?

//part of the code
line[] = '>', '>', '#';
circuit = line[num];
    while(true)
    
        if(circuit == '>')
        
            num++; //add 1 to num
            cout << circuit;

         else if(circuit == '<')
        
            num--; //substract 1 to num
            cout << circuit;

         else if(circuit == '#')
        
            break;
        

num 也是 0。

【问题讨论】:

您缺少部分代码。另外,您是否在调试器中逐步完成此操作以查看自己发生了什么? circuit = line[num]放到while循环中 circuit = line[num]; 是一次性作业。它确实circuitline[num] 之间建立关系。因此,当您稍后更新linenum 时,不会 更改circuit 创建minimal reproducible example 【参考方案1】:

您声明 circuit = line[num]; 然后更新 num 但您不会更改已定义的电路值。在您的 if 语句中,您可以执行 circuit = line[num++];,执行

num++;
circuit = curcuit[num]

或者保留你所拥有的并将 curcuit = curcuit[num] 放在你的 while 循环的最顶部,然后再满足任何条件。

`

【讨论】:

【参考方案2】:

在您的循环中,您永远不会更新 circuit。所以它将永远循环使用相同的字符并执行相同的 if-branch !

num 是否在某处初始化也不清楚。此外,还不清楚如何找到数组的末尾。

所以最好将行设为string 并考虑如下循环:

for (int i=0; num<line.size(); i++) 
    circuit=line[i];
    ...

请不要在索引中倒退:所以我探索 chars 和 num 的总和

【讨论】:

以上是关于我的 c++ 数组值不想改变,它输出无限循环的主要内容,如果未能解决你的问题,请参考以下文章

无限循环计算阶乘问题

当用户输入除整数以外的任何内容时,为啥我的程序会无限循环输出? C++ [重复]

Mqtt无限循环

无限循环发生在哪里?

尝试根据值设置不同的数组。错误:组件渲染函数中可能存在无限更新循环

无限循环(动作脚本 3)