写了一个测试程序,优点搞不懂printf函数了,程序如下:
#include
int main()
{
char a[5]="0123";
char *p =a;
printf("a=%p,p=%p,p++=%p",a,p,p++);
return 0;
}
运行之后 a 和p++ 值是一样的,p是p++ 的值加一的值,
求问原因?
如果将P与P++位置互换,输出的值还是一样的。。。
printf是从右向左执行。
你可以把p++和p换个位置,看看会输出什么
p++ 使用之后加一 ,这里还没使用所以和 p 的值一样 ,你下面再加一行,输出p 就会发现p 的值已经加了1
你这个程序输出的a,p,p++都是一样的,p++的+1操作是先使用p后加1,也就是说只要这条语句还没以分号结束,p++使用的都还是p的值,只有结束了这条语句,下一条语句才使用p+1.你可以看看http://blog.csdn.net/hongdeng123/article/details/52372873
printf是从右向左执行。
我知道从右到左执行,问题是P与P++互换位置,值还是没有变换,而且P++值与A一样,p比P++值大一位
p++是先用p的值,再+1
搞清楚p++和++p两个的区别