4

次のような場合に実行したい:

if(x has not been initialized)
{...
}

これは可能ですか?ありがとう

4

6 に答える 6

4

「変数の内容が未定義であるかどうかをチェックする方法はありません。できる最善の方法は、シグナル/センチネル値を(たとえばコンストラクターで)割り当てて、さらに初期化を実行する必要があることを示すことです。 ."

アレクサンダー・ゲスラー

ここから

于 2013-06-07T18:49:12.343 に答える
3

その動作を実装するには、ポインターを使用できます。デフォルトは 0 に開始されます。

例えば:

int *number = 0;
// ...
if (!number) {
    // do something
}

整数だけでなく、任意の型でそのトリックを使用できます。

Cat *kitty = 0;
// ...
if (!kitty) {
    // do something
}
于 2013-06-07T18:49:25.250 に答える
1

a) For primitive datatypes such as int, float its not possible to know if its initialized or not.

b) For pointers you can check if its not nullptr or not

if(ptr != nullptr)
{
}

c) For custom class you need to introduce bool member which can be set to true in constructor so that we can use it to check if object is initialized or not.

if(obj.isInitialized())
{
}
于 2013-06-07T19:03:21.737 に答える
-1

そのようなものは、ポインターに対して機能します。言う:

int* x = NULL;  //initialize
if(x == NULL)
{
    //dostuff
}

または単に

if(!x)
{
    //dostuff
}

ただし、通常のintだけの方法があるかどうかはわかりません

編集:考えてみると、ルシアンは正しいです。それは未定義の動作になります。残りが言ったように、既知の値に初期化する必要があります。

于 2013-06-07T18:51:35.383 に答える