変数はRAMにあります。 RAMは決して空ではありません。各セルには値があります。プログラマーが値を知っているかどうかは、プログラマーがその変数を初期化したかどうかによって異なります。
私は、変数の "空き"を知らせる2つの方法を知っています。 1つは、「空」を意味する値、例えば「0」、またはMAX_INTEGER、または好きなものを持つことです。これは、アルゴリズムのロジックが特定の値のみを持つように変数を強制する場合に有効です。そのため、値が有効かどうかを知ることができます。そうでない場合、変数が有効でないか、空であると言うことができます。
あなたの変数は、(あなたのタイプの範囲内で)任意の値を保持することができた場合は、解決策は次のように、小さな構造体を使用することがあります
typedef struct
{
int value;
int is_empty;
} tVar;
ように可変i
をこのように宣言...
i.is_empty = 1;
だから、あなた:あなたはこのように、空として初期化することができます
tVar i;
プログラムは次のようになります。
int main(void)
{
tVar someVar = {0,1}; // declaring and initializing it as empty
...
...
...
if (!someVar.is_empty) // if someVar is not empty...
{
someVar.value = -1;
someVar.is_empty = 0; // is not empty any more
}
else if (someVar.is_empty && (some_other_condition))
{
someVar.value = 1;
someVar.is_empty = 0;
}
return 0;
}
空ではどういう意味ですか? – Haris
'someVar'は初期化されていないので、値が何であるか分かりません。変数を読む前に必ず**初期化するべきです。 – Joe
いいえ(非静的、非グローバル)未初期化変数は未定義の動作です。 – Zeta