C: atribuições transitivas (duplas)

Eu usei essa construção em C:

list->head = list->tail = NULL;

e agora considero se isso realmente significa o que suponho.

Isso significa?

list->head = NULL; list->tail = NULL;

ou

list->head = list->tail; list->tail = NULL;

thx para esclarecer