【问题标题】:Inifinite loop not printing all values无限循环不打印所有值
【发布时间】:2013-10-17 15:32:01
【问题描述】:
#include<iostream.h>
#include<conio.h>

void main()
{   
    clrscr();
    int a,b;
    a=0;
    cin>>b;
    do
    {
    if (b==1)
        cout<<"case1a " ;
    else if (b==2)
        cout<<"case 1b ";
        a=a+1;
    }
    while(a=0);

    cout<<"Interval";

    do
    {
    if (b==1)
        cout<<"case 2a";
    else if (b==2)
        cout<<"case 2b";
        a=a-1;
    }
    while(a=1);

    getch();
}

上面的代码创建了一个无限循环。 预期的输出是“case1a case2a case3a case4a”无限次,但程序只打印“case1a”无限次

那么我该如何纠正这个问题并获得我想要的输出呢?

PS 我使用 shift+break 暂停输出以查看屏幕上打印的内容

【问题讨论】:

  • 正确缩进你的代码,使其可读。
  • @Chemistpp - 有一个“使用命名空间标准”,它只是在顶部的屏幕上标出:)
  • @Chemistpp 他使用的旧编译器不使用std::
  • 我看不到你在哪里输出 case3acase4a... 目前对我来说它看起来也不是很无限,即使考虑到 while 中的错字.你确定这是你正在运行的程序吗?
  • @VusP:确实如此,但不是第一个循环,这是输出case1a 的地方...据我所知,这只会发生一次(a=0 评估为0 ,或假)。

标签: c++ coding-style turbo-c++


【解决方案1】:

while(a=0) 应该是while(a==0)

同样适用于您的第二个while

您将赋值运算符 = 与相等运算符 == 混淆了。

【讨论】:

  • 好的,我刚刚更改了 = 与 == 现在的问题是它不再是无限循环......因为我想要一个无限循环,所以我在第一个循环中做了 a=a+1 并且a=a-1 在第二个循环中使其成为无限循环..
  • 我很难理解你想要做什么......我知道它涉及一个无限循环,但除此之外......
  • @user2891112 为什么会出现无限循环?第一个循环完成后,代码中的任何内容都不会返回到它。第二个循环没有设置为永远循环。
【解决方案2】:

while 语句后没有分号 (;)。

【讨论】:

  • 如果您可以包含一些代码并在其中展示您将如何修复它,那将是一个更清晰的答案。
猜你喜欢
  • 2020-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 2013-10-07
相关资源
最近更新 更多