1

次のプログラム:

int main( )
{
    static char s[25]="The cocaine man";
    int i=0;
    char ch;
    ch=s[++i];
    printf("%c",ch);
    ch=s[i++];
    printf("%c",ch);
    ch=i++[s];
    printf("%c",ch);
    ch=++i[s];
    printf("%c",ch);
    return 0;
}

プログラムの出力は次のとおりです。

へぇ!

hhe問題ありませんが、「!」出力で私を混乱させます.ステートメントch=++i[s]はこれに責任があります. 次のように解釈する必要があります。

ch=*(s+++i);

接頭辞のインクリメントにより i が 4 になり、それを使用して 'c' を取得しましたが、'!',私はそれを取得できず、さらにこの操作の後、確認するために 'i' の値を出力しましたが、3 ではなく 4 でした. 何が問題なのですか?

4

2 に答える 2

5

その理由は

ch=++(i[s]);

どこでi[s]=' '。そしてASCIIコードでは、'!' = ' ' + 1

于 2013-06-28T06:54:54.953 に答える
0

演算子 [] は、算術演算子よりも優先されます。これを知ること++i[s]++(i[s])、ジョンが言ったのと同じです。

于 2013-06-28T07:04:32.910 に答える