使用while循环的传统编程使用单个参数ex:
完成下面的代码在while循环中有两个参数
ssize_t r_read(int fd, void *buf, size_t size)
{
ssize_t retval;
while (retval = read(fd, buf, size), retval == -1 && errno == EINTR);
return retval;
}
答案 0 :(得分:2)
while
不接受参数,而是表达式。在您的示例中,while
没有采用2个参数,而是包含由,
运算符分隔的2个子表达式的表达式。此运算符执行两个表达式,但返回最后一个表达式生成的值。
在您的示例中,通过在read()
表达式中执行while
操作,将其用作将循环转换为单行的技巧。
它等同于:
do {
retval = read(fd, buf, size);
} while (retval == -1 && errno == EINTR);