求各位学霸们解释!我不理解

img

我写程序试了试,发现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语句。