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

时间:2019-05-08 17:27:44

标签: c++ arrays loops

通常,如果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;
        }

数字也是0。

2 个答案:

答案 0 :(得分:0)

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

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

因此最好将string行作为一行,并考虑如下循环:

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

请不要在索引中倒退:所以我用于探索字符和num作为总和

答案 1 :(得分:0)

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

num++;
circuit = curcuit[num]

或者保留您拥有的内容,然后在满足任何条件之前,将curcuit = curcuit [num]放在while循环的顶部。

`