2017-02-24 2 views
0

Ich hatte vor kurzem ein Problem mit einem Programm, wo ich eine Variable, die ich initialisiert hatte, mit einer Variablen verglichen hatte, die ich nicht initialisiert hatte. Ich habe es herausgefunden (mit Hilfe von anderen hier!), Aber das warf eine andere Frage auf. Ist der Wert einer nicht initialisierten Variablen vom Compiler oder von etwas anderem gesetzt? Wenn ich das Programm unter Linux ausführte, wurde die Variable auf -127xxxxxx gesetzt, aber in Windows wurde es auf 0 gesetzt.Wird der Wert einer nicht initialisierten Variablen vom Compiler oder von was gesetzt?

Also im Wesentlichen meine Frage ist, was den Wert von Variablen ohne Werte setzt. Dies war ein C-Programm.

OS: Windows 10 und Linux Ubuntu 14.04.5 LTS

+0

@KyleStrand Danke, dieser Beitrag war eine ähnlich andere Frage, aber eine der Antworten auf diesen Beitrag beantwortete meine Frage. – Hunter

Antwort

1

In C sind nicht initialisierten Block Umfang Variablen gesagt haben unbestimmten Wert. Wenn Sie Code schreiben, der dann einen unbestimmten Wert zu lesen versucht, je nach a few details über die Systeme und den Rest des Codes, entweder:

  • undefined behaviour sofort geschieht, oder
  • Die Lese einen Wert erzeugt, die auftreten können ohne Grund geändert werden und ein undefiniertes Verhalten verursachen, wenn dieser Wert (oder ein davon abgeleiteter Wert) an eine Bibliotheksfunktion übergeben wird.
Verwandte Themen