1

C でいくつかの概念的な質問を見ているときに、本でこの質問に出くわしました。次のプログラムの出力は何ですか?

#include<stdio.h>
#include<string.h>
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\n",ch);
    return 0;
}

答え :

 hhe!

この出力がどのように得られたかを誰か説明してもらえますか?

4

3 に答える 3

3

最初の課題から

ch=s[++i];

chi(i=1) をインクリメントし、 のインデックス (i=1) に文字を割り当てsます。

ch=s[i++];

chのインデックス (i=1) に文字を割り当て、 si(i=2) をインクリメントします。

ch=i++[s];

chのインデックス (i=2) に文字を割り当て、 si(i=3) をインクリメントします。キー: s[i] == i[s].

ch= ++i[s];

のインデックス (i=3) の ASCII 値をインクリメントし、sch に割り当てます。キー :[]プレフィックスより優先度が高い++

于 2012-04-09T18:10:17.267 に答える
1

これを理解するための鍵は、Cでは以下が同等であるということです。

x[y]
*(x+y)

また、そのプレフィックスの優先順位は。よりも++低くなり[]ます。

ASCII文字セットの表も役に立ちます。

于 2012-04-09T18:00:20.047 に答える