【问题标题】:My c++ array value don't want to change, it output infinite loop我的 c++ 数组值不想改变,它输出无限循环
【发布时间】: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

标签: c++ arrays loops


【解决方案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 的总和

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-12
      • 2019-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-27
      相关资源
      最近更新 更多