2

私はCの初心者で、次のようなコードを持っています:

#include <stdio.h>
main()
{
    int i;
    int ndigit[10] = { [9] = 5 };
    printf("%d\n",++ndigit['9']);
}

これは、次のような値を出力します。

-1074223011

しかし、ステートメントを次のように変更すると:

++ndigit['9'-'0']

値を正しく出力しています

6

-0インデックスを適切に機能させるために、インデックスを追加する必要があるのはなぜでしょうか? そして、なぜ言及するだけ++ndigit['9']では役に立たないのですか?

前もって感謝します。

4

1 に答える 1

7

配列の 10 番目の要素にアクセスする場合は、次のようにします。

array[9]

9数値+ 1の文字定数の値を持つインデックスの要素にアクセスする場合は、次のようにします。

array['9']

ASCII (および C で使用される他のすべての文字エンコーディング スキーム、Wiz のコメントを参照) の定義方法により、式'9' - '0'は実際には 9 に等しくなり、この場合は混乱する可能性があります。

于 2012-04-05T05:43:48.473 に答える