2017-06-17 2 views
-5

Ich bekomme die Ausgabe als -28762.Warum ist es nicht 0 (Null), die sollte der Standardwert von Integer sein?Default-Werte in Turbo c

#include<stdio.h> 
#include<conio.h> 

void main(){ 
    int a; 
    clrscr(); 
    printf("%d",a); 
    getch(); 
} 
+3

Nicht definiertes Verhalten ist undefiniertes Verhalten. Sie müssen "a" auf einen Wert initialisieren. –

+4

Verwenden Sie kein TurboC. Es implementiert eine veraltete Variante von C (oder C++, mit TurboC++). Verwenden Sie neuere standardkonforme Compiler (zB [GCC] (http://gcc.gnu.org/) oder [Clang] (http://clang.llvm.org/) ...) und aktivieren Sie alle Warnungen und Debug-Informationen (zB kompilieren Sie mit 'gcc -Wall -Wextra -g', das Sie gewarnt hätte). Beachten Sie, dass Ihr Programm falsch ist (da "main" nicht als "void" -Funktion deklariert werden sollte). –

Antwort

-2

Während Sie die Variable nicht initialisiert haben, bezieht sich die Variable auf den Speicherort im Speicher.

Wert dieser Stelle ist, wenn sie integer umgewandelt etwas ergeben würde, und in Ihrem Fall ist es -28762

Bitte beachten Sie, dass, wenn Sie einfache Datentypen wie int deklarieren, schwimmen etc dies geschieht.

Für komplexe Typen wie benutzerdefinierte Typen und Strukturen wird dies nicht passieren.

Die Integer-Variablen werden nicht auf Null gesetzt, es sei denn, sie sind Dateibereich oder statisch. Siehe Referenzverbindung https://msdn.microsoft.com/en-us/library/y2xtdbay.aspx

Wenn die Erklärung der z für eine nicht initialisierte statische Variable ist, oder am Umfang Datei war, würde es einen Anfangswert von 0 erhalten, und dieser Wert wäre nicht änderbar.

+0

Ist -28762 ..der Speicherort im Speicher .. ????? – Nitesh

+0

Nein, aber wenn Sie int deklarieren, wird ihm ein Speicherplatz von 2 Byte zugewiesen. Es könnte irgendetwas an dieser Stelle gespeichert sein. – DhruvJoshi

+0

Wann ist der Fall, dass ... der Standardwert einer ganzen Zahl, d. H., '0', wird einem 'a' zugewiesen .. ???????? – Nitesh

Verwandte Themen