Warum produziert rand () + rand () negative Zahlen?

Ich beobachtete, dassrand() Bibliothek Funktion, wenn es nur einmal in einer Schleife aufgerufen wird, erzeugt es fast immer positive Zahlen.

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

Aber wenn ich zwei @ hinzufürand() ruft an, die generierten Nummern haben jetzt mehr negative Nummern.

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

Kann jemand erklären, warum ich im zweiten Fall negative Zahlen sehe?

PS: Ich initialisiere den Startwert vor der Schleife alssrand(time(NULL)).

Antworten auf die Frage(16)

Ihre Antwort auf die Frage