2017-06-17 6 views
-5

出力が-28762.Whyになっていますが、それは0(ゼロ)ではありません。これは整数のデフォルト値ですか?ターボCのデフォルト値

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

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

未定義の動作は未定義の動作です。 'a'をある値に初期化する必要があります。 –

+4

TurboCは使用しないでください。 C(またはC++、TurboC++)の廃止された変種を実装しています。最近の標準準拠のコンパイラ(例えば[GCC](http://gcc.gnu.org/)や[Clang](http://clang.llvm.org/)...)を使用し、すべての警告とデバッグ情報を有効にする例えば ​​'gcc -Wall -Wextra -g'でコンパイルしてください。これはあなたに警告していました)。プログラムが間違っていることに注意してください( 'main'は' void'関数として宣言してはいけません)。 –

答えて

-2

変数を初期化していない間も、変数はメモリ内の位置を参照します。

この場所の値は整数に変換何かをもたらすであろう、そしてあなたのケースでは-28762

だあなたはint型のような任意の単純なデータ型を宣言するときなどフロートこれが起こることに注意してください。

ユーザー定義の型や構造のような複雑な型の場合、これは起こりません。

整数変数は、ファイルスコープまたは静的でない限り、デフォルトではゼロではありません。 は、zの宣言が初期化されていない静的変数のためだったか、ファイルスコープであった場合、それは0の初期値を受信すると、その値は変更不可能となり、基準リンクhttps://msdn.microsoft.com/en-us/library/y2xtdbay.aspx

を参照してください。

+0

です-28762 ..メモリ内の場所.. ????? – Nitesh

+0

intを宣言しても、2バイトのメモリ位置が割り当てられます。その場所に何かが格納されている可能性があります – DhruvJoshi

+0

この場合、...整数のデフォルト値、すなわち '0'が 'a'に割り当てられます.. ???????? – Nitesh

関連する問題