这个语句为什么正确啊?

若有说明int c,则while(c=getchar());是正确的c语句。
getchar不是自符输入函数吗,int也不是字符变量啊,是因为整数c可以通过ASCII码转换成字符吗

没有问题的,会自动类型转换。
int 和char类型可以进行相互运算和转换的。根据ASCII码。

img

是把字符转成了ASCII码保存到了变量c中

正常来说,while里面和if一样,需要一个bool类型的表达式作为条件来判断是否执行
但是C语言各种数值类型之间可以隐式转换
先说int转bool的逻辑:0=false,非0=true
char型转int:取字符的ascii码
char转bool:先转int再转bool