为什么输出是无限的?

Sah*_*hil 0 c c++ loops infinite-loop while-loop

int i;
while(i=10)
{
    printf("%d\n",i);
    i=i+1;
}
Run Code Online (Sandbox Code Playgroud)

有一个程序,其中while(i = 10)表示while(1)[通常]表示while循环为true.因此它应该只打印10一次并将i的值递增1,即i变为11.但输出是无数次打印'10'.为什么会这样?我的平台是:64位Windows 7并使用32位Dev C++编译器.

dar*_*ses 8

我想你想在while条件中使用double equal(比较)而不是单个equ(赋值).您还应该将变量i初始化为10(否则永远不会执行while块).

int i=10;
while (i==10)
{
    printf("%d\n",i);
    i=i+1;
}
Run Code Online (Sandbox Code Playgroud)


Omk*_*ant 5

在while循环中看到,

while(i=10) // assigns the value 10 to the i which is always true (becuase any non-zero value is true in such a case).

你用的是assignment operator =使这个任务返回的值是值rvalue1010永远是正确的.

这就是无限循环的原因.

你应该在循环中使用while(i == 10)或者使用while(i < = 10)任何比较运算符.

比较运算符结果为1(true)或0(false).当in while(cond) cond为false 时,循环终止.

  • 它应该只打印10次.为什么无限? (2认同)