C语言 *p++=*(p+n); 是*p=*(p+n) 然后*p+1=*(p+n);

来源:学生作业帮助网 编辑:作业帮 时间:2024/03/29 15:36:44
C语言 *p++=*(p+n); 是*p=*(p+n) 然后*p+1=*(p+n);

C语言 *p++=*(p+n); 是*p=*(p+n) 然后*p+1=*(p+n);
C语言 *p++=*(p+n); 是*p=*(p+n) 然后*p+1=*(p+n);

C语言 *p++=*(p+n); 是*p=*(p+n) 然后*p+1=*(p+n);
这个主要是c运算符号优先级的问题
()级别最高
++,*都是单目运算其次
然后是算数运算 的+号
最低的是=(赋值运算)
好了.我们看看++,*号是同一级别,按右边线结合
所以*p++等价于*(p++) 先用p然后p+1,既然是先用p,【难点到了】
我们分析下a+=1 等价于a=a+1 先拿a的值,加1后赋值回去
所以你的这句话最终等价于
*p=*(p+n);
p++
这2句话.
示例代码:
#include "stdio.h"
#include "conio.h"
main()
{
char a[5]={'a','b','c','d','e'};
char *p=&a[0];
*p++=*(p+4);
printf("%c,%c\n",*p,*(p-1));
getch();
}
运行结果:
b,e