Por que as instruções de atribuição retornam um valor?

Isso é permitido:

int a, b, c;
a = b = c = 16;

string s = null;
while ((s = "Hello") != null) ;

Para meu entendimento, atribuiçãos = ”Hello”; só deve causar“Hello” a ser atribuído as, mas a operação não deve retornar nenhum valor. Se isso fosse verdade, então((s = "Hello") != null) produziria um erro, poisnull seria comparado a nada.

Qual é o raciocínio por trás da permissão de declarações de atribuição para retornar um valor?

questionAnswers(13)

yourAnswerToTheQuestion