#include <iostream>
using namespace std;
int main(void)
{
int i = 10;
cout << i << " " << i++ <<" "<< i++ << endl;
printf("i,i++,i++ = %d,%d,%d\n",i,i++,i++);
printf("%d %d\n",i++,i++);
//printf("%d,%d\n",i++,++i);
char str[] = "chinese people";
char *p = &str[0];
printf("p = %s\n",p);
printf("p=%p\n",p);
printf("*p = %c\n",*p);
++*p++;
printf("p = %s\n",p);
printf("p=%p\n",p);
printf("*p = %c\n",*p);
int a[3] = {1,2,3};
int *pt = a;
printf("pt = %p\n",pt);
pt++;
printf("pt = %p\n",pt);
return 0;
}
输出结果:
知道第7行代码的输出结果为什么那样吗?比较第7、8、9行代码的输出会发现,自增自减运算具有右结合性。
至于第7行和第8行不一样,好好想一下,为什么?我就不说了,要自己多思考。
变量的自增自减是改变变量的值,指针的自增自减是改变指针指向的地址。
++*p++,将p加1,同时*p所指单元加1。