¿Por qué rand () + rand () produce números negativos?

Observé querand() La función de biblioteca cuando se llama solo una vez dentro de un ciclo, casi siempre produce números positivos.

for (i = 0; i < 100; i++) {
    printf("%d\n", rand());
}

Pero cuando agrego dosrand() llamadas, los números generados ahora tienen más números negativos.

for (i = 0; i < 100; i++) {
    printf("%d = %d\n", rand(), (rand() + rand()));
}

¿Alguien puede explicar por qué estoy viendo números negativos en el segundo caso?

PD: inicializo la semilla antes del ciclo comosrand(time(NULL)).

Respuestas a la pregunta(8)

Su respuesta a la pregunta