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”的值来检查,它是 4 而不是 3 . 什么问题,我不明白?

4

2 回答 2

5

因为它是

ch=++(i[s]);

哪里i[s]=' '。在 ASCII 码中,'!' = ' ' + 1

于 2013-06-28T06:54:54.953 回答
0

运算符 [] 优先于算术运算符。知道这一点++i[s]就相当于++(i[s])john所说的。

于 2013-06-28T07:04:32.910 回答