以下计划:
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!
hhe
没问题,但是'!'在输出中让我感到困惑。声明ch=++i[s]
对此负责。它应该被解释为:
ch = *(s + ++ i);
由于前缀增加导致i变为4并使用它来获取'c'但是'!',我没有得到它并且在此操作之后加上我打印了'i'的值来检查它是4不是3.问题是什么,我不明白?
答案 0 :(得分:5)
因为它是
ch=++(i[s]);
i[s]=' '
。在ASCII代码中,'!' = ' ' + 1
答案 1 :(得分:0)
operator []优先于算术运算符。知道这个++i[s]
等同于约翰所说的++(i[s])
。