While循环以分号结尾

时间:2019-05-26 02:53:35

标签: c io

我有代码;

    while(nread = read(fd,&c,1)==0);

为什么while循环以分号结尾?这行难道不做任何事情就会贯穿整个fd吗?

2 个答案:

答案 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个而不是整个数字序列