给了我一段我们必须猜测输出的代码。
我的输出:60
#include <stdio.h>
int main()
{
int d[] = {20,30,40,50,60};
int *u,k;
u = d;
k = *((++u)++);
k += k;
(++u) += k;
printf("%d",*(++u));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
预期:
k = *((++u)++)将等于30,因为它将迭代一次(++ u),然后将迭代但不分配。所以我们在d [1]中。
(++u) += k 在这里,u将迭代到下一个位置,向其添加k,然后将结果分配给u的下一个元素。
实际结果:
main.c: In function ‘main’:
main.c:16:16: error: lvalue required as increment operand
k = *((++u)++);
^
main.c:18:11: error: lvalue required as left operand of assignment
(++u) += k;
Run Code Online (Sandbox Code Playgroud)
这使我在指针的概念上更加困惑。请帮忙。