2017-02-24 9 views
0

私は最近、私が初期化した変数とそうでない変数を比較したプログラムに問題がありました。私は最終的にそれを理解しました(他の人の助けを借りて!)が、これは別の疑問を提起しました。初期化されていない変数の値は、コンパイラーによって、または完全に何かによって設定されます。 Linuxでプログラムを実行したとき、変数は-127xxxxxxに設定されましたが、Windowsでは0に設定されました。初期化されていない変数の値は、コンパイラまたは何によって設定されますか?

本質的に私の質問は、値のない変数の値を設定することです。これはCプログラムでした。

OS:CでのWindows 10とLinuxのUbuntu 14.04.5 LTS

+0

@KyleStrandこの投稿は同じように異なる質問でしたが、その投稿の回答の1つが私の質問に答えました。 – Hunter

答えて

1

、初期化されていないブロックスコープ変数は不定値を持っていると言われています。あなたはシステムや、コードの残りの部分についてa few detailsに応じて、その後、不定値を読み取ろうとするコードを書く、のいずれかの場合:

  • undefined behaviourはすぐに起こる、または
  • 読み取りが表示されることがあり、いくつかの値を生成しますその値(またはそれから派生した値)がライブラリ関数に渡された場合、未定義の動作を引き起こします。
関連する問題