我的 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];
是一次性作业。它确实不在circuit
和line[num]
之间建立关系。因此,当您稍后更新line
或num
时,不会 更改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++ [重复]