Das ist Müll. Sie erhalten 8 als Müll und subtrahieren um 7 zu erhalten.
Dies ist was undefiniertes Verhalten ist. Nur weil du 8 bekommst, heißt das nicht, dass es gut definiert ist. Versuchen Sie, in Ihrem Code komplexere Dinge zu tun. Fügen Sie Variablen oberhalb und unterhalb Ihrer char
hinzu.
über Ihren "test", sagen Sie:
jedoch die Konsistenz ist schwer zu übersehen, dass Müll unter Berücksichtigung zufällig sein sollte.
Sie müssen Ihre Annahmen überprüfen. "Müll sollte zufällig sein", sagt wer? Nach was soll der Müll zufällig sein? Der einzige Weg, auf dem Müll zufällig ist, ist, wenn das System periodisch Speicher durchläuft und ihm Zufallszahlen zuordnet.
Wenn wir "zufällig" sagen, meinen wir, wir wissen nicht, was es sein wird. Das macht es nicht unbestimmt. Dies sind Computer. Wenn Sie ihnen sagen, dass sie immer und immer wieder die gleiche Sache machen sollen, wird es dasselbe tun über und über.
Ihr Compiler und Ihre Einstellungen produzieren immer den gleichen Code, der Ihnen diese Müllwerte gibt. Deterministisch, aber Sie können sich nicht auf dieses Verhalten verlassen: "zufällig".
Auch 1-800 bedeutet nicht, dass Sie das so nehmen wie Sie. "8" bedeutet nicht unbedingt Müll, denn in der Art, wie Dinge eingerichtet werden, füllt Ihr Compiler sie mit 8. Was er damit meint, ist 8 genauso Müll wie jede andere Zahl.
Zustimmen. Wenn Sie das verstehen wollen, versuchen Sie es mit dem Debugger durch den Code zu gehen, mit einem Schritt (möglicherweise im Assembly-Modus), da dies Sie durch den Startcode führt, der vor main() läuft. – Adriaan