我有代码;
while(nread = read(fd,&c,1)==0);
为什么while循环以分号结尾?这行难道不做任何事情就会贯穿整个fd吗?
答案 0 :(得分:0)
空语句什么也不做,所以
while(nread = read(fd,&c,1)==0);
等同于
while(nread = read(fd,&c,1)==0) { }
这是语句的作用:
read
返回1(因为它读取了一个字符),则循环将立即结束(将nread
设置为0
之后)。read
返回0(因为到达EOF),它将尝试再次读取(可能返回也可能不返回,返回0)。read
返回-1(由于发生错误),它将尝试再次读取(可能会或可能不会再次返回-1)。由于这很容易退化为无限循环,因此肯定会破坏此代码。
答案 1 :(得分:-1)
这会一直循环到循环中,直到条件不满意为止 所以基本上 这是一个“ for”循环的例子
for(i=0;i<10;i++);
printf("%d",i);
这将直接打印10个而不是整个数字序列