Por que colocar parênteses em torno de uma lista de valores separados por vírgula altera a atribuição? [duplicado

Esta pergunta já tem uma resposta aqui:

O que significa uma lista de valores separados por vírgula, entre parênteses, em C? a = (1, 2, 3); [duplicado respostasComo funciona o operador de vírgula 9 respostas

Considere o seguinte código,

    int i;

    i = 1,2,3,4,5;
    printf("First time i = %d\n",i);

    i = (1,2,3,4,5);
    printf("Second time i = %d\n",i);   

Saída

Primeira vez i = 1

Segunda vez i = 5

Por que os parênteses fazem o operador de vírgula assumir o último valor e, sem parênteses, o primeiro valo

Desde já, obrigado

questionAnswers(4)

yourAnswerToTheQuestion