右箭头等于右箭头

时间:2017-12-14 12:01:46

标签: c pointers struct double

我在某些代码中看到了一些我不明白的东西。它在退货声明中说了什么?

static cell_ptr UD_self(cell_ptr c) { return c->U = c->D = c; }

这里定义:

struct cell_s;
typedef struct cell_s *cell_ptr;
struct cell_s {
    cell_ptr U, D, L, R;
    int n;
    union {
        cell_ptr c;
        int s;
    };
};

1 个答案:

答案 0 :(得分:1)

这只是写作的简便方法:

{
    c->D = c;
    c->U = c->D;
    return c->U;
}

语句return c->U = c->D = c;有效,因为赋值运算符=返回刚刚分配的值。然后,此值将用于下一个分配。它从右到左关联,因此它意味着return (c->U = (c->D = c));