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++编译器.
我想你想在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)
在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
=
使这个任务返回的值是值rvalue
是10
和10
永远是正确的.
这就是无限循环的原因.
你应该在循环中使用while(i == 10)
或者使用while(i < = 10)
任何比较运算符.
比较运算符结果为1
(true)或0
(false).当in while(cond)
cond
为false 时,循环终止.