2017-10-04 10 views
-5

私はこの短いプログラムを作ったばかりです。誰かが私がここで結果として2を得ている理由を説明してもらえますか?あなたが初期化されていない変数の値を出力するのでここで短いコードスニペットの説明が必要

はコード

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int variable; 
    int a; 
    a=variable; 
    a=200; 
    printf("%d",variable); 
    return 0; 
} 
+1

どのような価値がありますか? 200? –

+0

いや、私は200を期待しましたが、今はなぜそうではないのか理解しています。 –

答えて

2

は、という2つの変数、aおよびvariableを定義します。この時点での変数はではなく、に初期化されています。現在のところ、コンパイラは、タイプがintの2つの変数とその名前があることだけを知っています。 が初期化されていない変数variable変数aを初期化するために

は、あなたがそれからしてみてください、結果は明らかである:2つの変数が初期化されていないまま。

a200に初期化します。variableはまだ定義されておらず、初期化されていません。

その後、まだ初期化されていない変数は、コンパイラがそのメモリ位置を変数に割り当てたときにメモリ内に既に存在していたものだけを「実際」の値として受け取っていません。あなたのケースでは、それは "2"(または少なくともそれはprintfがそこから抽出できるものです)です。

さらなる読書:C Variables。これは、変数の定義、宣言、初期化の方法を説明します。

+0

ありがとうございました、今すぐ取得しました –

+0

@ kanishktanwar:問題が解決した場合は、その隣に表示されているチェックマークをクリックして回答を受け付けてください。そうすれば、この問題は「解決済み」(または「StackOverflow用語で「受け入れられた答えがある」)とマークされます。 – waka

5

です。それは不確定(と一見ランダム)値を持つでしょう。

aに代入すると、variableの値が200にコピーされ、aにコピーされます。 variableの値は変更されておらず、不確定です。

あなたはfind a good beginners book or twoを読むことをお勧めします。

0

cでは、変数に値を割り当てないと、何でもよいガベージ値が格納されます。コードに変数に値を代入しなかったので、2を出力します(何でもよい)

1

援助演算子(a =変数;)は2つの変数をリンクせず、右辺の式にある値を左辺に割り当てます。

ローカル変数は、値を入力できるボックスとして表示できます。

+0

これはコメントでなければなりません – Blaze349