2017-06-17 6 views
-5

Je reçois la sortie sous la forme -28762.Pourquoi n'est-ce pas 0 (zéro), qui devrait être la valeur par défaut de l'entier?Valeurs par défaut dans turbo c

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

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

Comportement indéfini est un comportement indéfini. Vous devez initialiser 'a' à une certaine valeur. –

+4

N'utilisez pas TurboC. Il implémente une variante obsolète de C (ou C++, avec TurboC++). Utilisez les derniers compilateurs conformes standard (par exemple [GCC] (http://gcc.gnu.org/) ou [Clang] (http://clang.llvm.org/) ...) et activez toutes les informations d'avertissement et de débogage (compilez par exemple avec 'gcc -Wall -Wextra -g' qui vous aurait averti). Notez que votre programme est faux (puisque 'main' ne devrait pas * être * déclaré comme fonction' void'). –

Répondre

-2

Alors que vous ne l'avez pas initialisé la variable, la variable ne se réfère à venir l'emplacement en mémoire.

La valeur de cette position lorsqu'il est converti en entier donnerait quelque chose, et dans votre cas, il est -28762

S'il vous plaît noter que lorsque vous déclarez tous les types de données simples comme int, float etc cela se produit.

Pour les types complexes tels que les types définis par l'utilisateur et les structures, cela ne se produira pas.

Les variables entières ne sont pas définies par défaut sur zéro, à moins qu'elles ne soient de portée de fichier ou statiques. Voir lien de référence https://msdn.microsoft.com/en-us/library/y2xtdbay.aspx

Si la déclaration de z est une variable statique ou non initialisée était à portée de fichier, il reçoit une valeur initiale de 0, et que la valeur serait non modifiable.

+0

Est -28762 ..la localisation en mémoire .. ????? – Nitesh

+0

Non, mais lorsque vous déclarez int, un emplacement de mémoire de 2 octets lui est affecté. Il peut y avoir n'importe quelle chose stockée à cet endroit – DhruvJoshi

+0

Quand est le cas que ... la valeur par défaut d'un nombre entier, c'est-à-dire, '0' est assigné à 'a' .. ???????? – Nitesh