一个很简单的c语言的问题

int main()
{
a=0,b=6,c=3;
for(;a;)
printf等
}
请问for的测试条件为什么不是一个式子而是一个字符呢

for (; a; )等价于for (; a != 0; ),其中初始化语句和改变循环变量表达式被省略
其实for语句中的三项都可以省略,for(;;)等价于while(1)

啥意思?
for(;a;)就是没有初始条件,没有循环变化条件,只有循环结束条件是a!=0
for语句的三项都是可以省略的

一个值也可以看作一个式子,就是a!=0的时候成了立