关于对指针变量操作的问题

来源:百度知道 编辑:UC知道 时间:2024/05/18 11:36:52
#include <stdio.h>
main()
{
char s[]="159",*p;
p=s;
printf("%c",*p++);
printf("%c",*p++);
}
我的分析是,p指向1,所以第一个输出1,然后1自增为2,所以第二个输出为2,有错吗?

错!
先输出 1
后输出 5
因为指针的地址先++后再取内容,
++ 的优先级比 * 的要高
所以是先加地址后取内容

第一个printf语句是p指向1,所以输入1,然后p指向下一个值
所以第二printf语句输出5

如果改为:
printf("%c",(*p)++);
printf("%c",*p++);

那就是输出 1 2了

厉害