
在 C 语言中:
 a = b = c;的执行顺序(有也就是符号优先级)是:
- 先执行 - b = c
- 然后执行 - a = (b = c)的结果(也就是- c)
所以:
 a = b = c;等价于:
 b = c;
 a = c;同样适用于结构体成员:
 x.y = x.z = something;延伸一点点:
为什么链式赋值可以这样做?
因为赋值表达式本身会返回被赋的值(即右边的值),所以你可以把它继续赋给另一个变量。
总结:
表达式:
 (head)->next = (head)->prev = head;等价于:
 (head)->prev = head;
 (head)->next = head;作用是:把链表头节点的 next 和 prev 都初始化为指向自己,构建一个空的循环双向链表。
Ahmedabad
Tags
C语言