我写程序试了试,发现for(;;)的第二个表达式只要为非0项,都会导致循环无法跳出,因为C语言中0表示False。
这个问题的核心在于赋值语句的返回值是什么,而(k=1)的返回值实际就是返回1本身,相当于for(...;1;....),我们可以代码验证赋值语句的返回值:
#include<iostream>
using namespace std;
int main()
{
int i;
if(i=0)
{
cout<<"True"<;
}
else
{
cout<<"False";
}
return 0;
}
>>> False
说明i=0实际返回了0,故if条件不成立,执行else语句。