最近找工作困难,闲着无聊,想去学一学一直想看的C语言。网上查了攻略,入手了一本《C程序设计语言》。
做到了习题1-6给我迷惑住了:
验证表达式getchar() != EOF的值是0还是1
参考答案的代码如下:
#include <stdio.h>
/*mac里面输入control+d就是EOF*/
int main()
{
int c;
/*这里为什么c = 0的话,循环就终止了呢?*/
while(c = (getchar() != EOF))
printf("%d\n",c);
printf("%d - at EOF\n",c);
}
其中,不能令我理解的是while(c=0)就跳出循环了呢,c语言中c=0应该是个赋值语句,又不是条件语句。
我猜测是c语言中的赋值语句会有返回值生成。于是写了下面几行测试代码:
#include <stdio.h>
int main()
{
int c;
printf("%d\n",c=199); /*果然,当c=0的时候就返回0,c=199就返回199*/
}
所以,while(0)跳出了循环就可以理解了!