
在 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语言