C语言链式赋值解析
本文解释了链式赋值写的的原理的原因,以及正确性。

在 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 都初始化为指向自己,构建一个空的循环双向链表。
加入对话