【发布时间】:2017-09-16 05:21:20
【问题描述】:
#include <stdio.h>
int main()
{
int arr[] = {1, 2, 3, 4, 5};
int *p = arr;
++*p;
p += 2;
printf("%d", *p);
return 0;
}
为什么这段代码没有给出任何编译时错误,我怀疑++*p 被评估为++(*p) 和*p 将是常量值1,当我们执行++(1) 这不是一个l-value,为什么编译器不报错?
【问题讨论】: