-1

2 次元配列について考えてみましょう。次のようになります。

[1][2][3][4][未定義][未定義][未定義]

[5][6][7][8][未定義][未定義][未定義]

[9][0][1][2][未定義][未定義][未定義]

このように for ループで未定義の値を変更できますか?

for (i=0;i<7;i++)
{    for (j=0;j<3;j++)

    {
    if (Arr[i][j]=="the value of undefined, which I wonder")
    Arr[i][j]=0;
    }
}

C# で NULL キーワードを使用したことを覚えていますが、それは明らかに C では機能しません。

ご協力ありがとうございました!

注:問題を解決するのにそれ以外の方法は必要ありません。その方法で解決するのに役立つキーワードまたはフレーズがあるかどうか疑問に思っています。

4

4 に答える 4

2

配列の要素が浮動小数点型の場合、NaN を使用して、それらが数値に設定されていないことを示すことができます (ほとんどの C 実装では、これはすべての C 実装ではありませんが、一般的です)。NaN を含むように配列を初期化する必要があります。それらは(通常)デフォルトではそこに配置されません。

配列の要素が別のタイプの場合、要素がまだ割り当てられていないことを示す値を選択する必要があり、配列を正常に使用すると問題が発生する可能性があります。

その後#include <math.h>、C 実装が NaN をサポートしているかどうかをテストできます。

#if defined NAN
    // NaNs are supported.
#else
    #error "This program requires support for NaNs."
#endif

オブジェクトxが NaN であるかどうかは、次の方法でテストできます。

if (isnan(x)) …

オブジェクトを NaN に設定するには、次のようにします。

x = NAN;
于 2013-08-11T01:32:16.003 に答える
0

言わせてもらえば、値がないということは、「未定義の値、どうしよう」という意味です。初期化していなければ、未知の値です。

于 2013-08-11T01:23:32.847 に答える
0

C の配列は、値に初期化しないと未定義の値になります。つまり、0 0 0 0 0 900000 0 0 0 0 0 などになる可能性があります。

はい、未定義の値がありますが、名前の通り...未定義です-設定値がないためです。

あなたがしているのと同じように、それらを上書きすることができます。. さらに良いのはmemsetを使用することです

未定義の理由は、メモリのチャンクを取得しているだけです-そのメモリには何でも(値に関して)座っている可能性があります。

編集:もちろん、配列を静的に初期化しなければOKです。

于 2013-08-11T01:21:54.803 に答える