*(p++) = 'a';和*p++ = 'a';的效果是一样的

编者:李国帅


时间:2009-04-10

 

问题描述:

()对++的影响如何呢?可以用下面的例子来说明。

所需资源:

VC

 

例子:

×(p++) = a和×p++ = a的效果是一样的_赋值

 

源码

 

#include <stdio.h>

//#include <stdlib.h>

#include <string.h>



int main(int argc, char **argv) {

char xx[20];

char *p = (char*)xx;

strcpy_s(xx,20,"123456");

*p++ = 'a';

printf("%s\n",xx);//a23456

printf("%c\n",*p);//2



strcpy_s(xx,20,"123456");

p = (char*)xx;

*(p++) = 'a';

printf("%s\n",xx);//a23456,首先xx[0]赋值为‘a’,然后p++,指向xx[1]

printf("%c\n",*p);//2



return 0;

}

总结:

不管如何强调,语句中的++总是在执行完后才进行。