Мне дан фрагмент кода, для которого мы должны угадать вывод.
Мой вывод: 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;
}
Ожидаемое:
k = *((++u)++)
будет равно 30, поскольку он будет повторяться один раз (++ u), а затем будет повторяться, но не назначаться. Итак, мы в д [1].
(++u) += k
здесь вы перебираете следующую позицию, добавляете к ней 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;
И это еще больше смутило меня в понятиях указателей. Пожалуйста, помогите.