#include<stdio.h>
int main()
{
char *s="Peace";
printf("%s\n",s);
printf("%s\n",s+1);
printf("%s\n",s++);
}
输出:
Peace
eace
Peace
我的查询是{I} s++
我应该打印"eace"
而不是"Peace"
。为什么会这样?
另一个问题是char *s="Peace";
这一行将字符串文字存储在一个匿名数组中,所以当s
指向'P'
时,但当我printf("%d\n",s);
写这个时,它怎么能够打印所有字符串?不应该只打印"P"
?
答案 0 :(得分:4)
s++
是帖子 -increment操作。它返回当前值s
然后增量s
。要获得您想要的内容,您需要使用 pre -increment,++s
。
答案 1 :(得分:3)
您对s ++的评价,增量是在估值之后。如果您希望在使用之前增加,那么您应该使用++ s。更改此小位将导致所需的输出。
试试这个:
char *s="Peace";
int counter;
for (counter=0;counter<=strlen(s);++counter)
{
printf("%s\n",s+counter);
}
答案 2 :(得分:2)
让我们逐行解码:
char *s="Peace";
此处s
指向&#39; P&#39;
printf("%s\n",s);
打印整个字符串&#34; Peace&#34;由于s
位于&#39; P&#39; 那是%s实际上。
printf("%s\n",s+1);
现在s
处于&#39; e&#39; ,所以它将打印&#34; eace&#34;。
printf("%s\n",s++);
这也将打印&#34; eace&#34;因为您使用了后增量运算符。如果您使用了++s
,那么它会打印&#34; ace&#34;。