' while循环中的表达式|参数的数量是否有限制?

时间:2015-08-04 14:42:47

标签: c

使用while循环的传统编程使用单个参数ex:

完成
  • while(1)(或)while(a == b)(或)while(a&& b)(或)while(!a)etc
  • 下面的代码在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;
    }
    
    1. while循环中的参数是否有限制?
    2. 对此有任何可能的解释,还是这种方法有名称?

1 个答案:

答案 0 :(得分:2)

while不接受参数,而是表达式。在您的示例中,while没有采用2个参数,而是包含由,运算符分隔的2个子表达式的表达式。此运算符执行两个表达式,但返回最后一个表达式生成的值。

在您的示例中,通过在read()表达式中执行while操作,将其用作将循环转换为单行的技巧。

它等同于:

do {
    retval = read(fd, buf, size);
} while (retval == -1 && errno == EINTR);