int main ()
{
int x[4] = {0, 2, 4, 6};
int *px;
int y;
px = x;
y = *px;
printf ("(y = *px), y = %x\n", y);
y = *px++;
printf ("(y = *px++), y = %x\n", y);
y = ++*px;
printf ("(y = ++*px), y = %x\n", y);
y = *++px;
printf ("(y = *++px), y = %x\n", y);
y = (*px)++;
printf ("(y = (*px)++), y = %x\n", y);
y = ++(*px);
printf ("(y = ++(*px)), y = %x\n", y);
cin.get();
return 0;
}
правильно ли я понимаю, что происходит в строчке: y = (*px)++
1) извлекаем значение на которое указывает px. *px = 4
2) далее к 4 прибавляем 1, получаем 5. т.е. y = 5.
Здравствуйте, i.dmitry, Вы писали:
ID>прошу помощи в понимании: ID>
ID>int main ()
ID>{
ID> y = (*px)++;
ID> printf ("(y = (*px)++), y = %x\n", y);
ID> y = ++(*px);
ID> printf ("(y = ++(*px)), y = %x\n", y);
ID> cin.get();
ID> return 0;
ID>}
ID>
ID>правильно ли я понимаю, что происходит в строчке: y = (*px)++ ID>1) извлекаем значение на которое указывает px. *px = 4 ID>2) далее к 4 прибавляем 1, получаем 5. т.е. y = 5.
ID>Вопрос: почему принт эфом выводится значение 4?
Потому что это — постфиксный инкремент. В этом случае сначала выполняется присваивание, а потом увеличение значения. В н попадает неувеличенное значение.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, i.dmitry, Вы писали:
ID>>прошу помощи в понимании: ID>>
ID>>int main ()
ID>>{
ID>> y = (*px)++;
ID>> printf ("(y = (*px)++), y = %x\n", y);
ID>> y = ++(*px);
ID>> printf ("(y = ++(*px)), y = %x\n", y);
ID>> cin.get();
ID>> return 0;
ID>>}
ID>>
ID>>правильно ли я понимаю, что происходит в строчке: y = (*px)++ ID>>1) извлекаем значение на которое указывает px. *px = 4 ID>>2) далее к 4 прибавляем 1, получаем 5. т.е. y = 5.
ID>>Вопрос: почему принт эфом выводится значение 4? LVV>Потому что это — постфиксный инкремент. В этом случае сначала выполняется присваивание, а потом увеличение значения. В н попадает неувеличенное значение.
тогда как сделать чтобы выводилось увеличенное?
что-то я совсем запутался.
int a = 5;
int *pa = &a;
int b;
b = (*pa)++;
cout<<(*pa)++;
cout<<b;
Здравствуйте, i.dmitry, Вы писали:
ID>Здравствуйте, LaptevVV, Вы писали:
LVV>>Здравствуйте, i.dmitry, Вы писали:
ID>>>прошу помощи в понимании: ID>>>
ID>>>int main ()
ID>>>{
ID>>> y = (*px)++;
ID>>> printf ("(y = (*px)++), y = %x\n", y);
ID>>> y = ++(*px);
ID>>> printf ("(y = ++(*px)), y = %x\n", y);
ID>>> cin.get();
ID>>> return 0;
ID>>>}
ID>>>
ID>>>правильно ли я понимаю, что происходит в строчке: y = (*px)++ ID>>>1) извлекаем значение на которое указывает px. *px = 4 ID>>>2) далее к 4 прибавляем 1, получаем 5. т.е. y = 5.
ID>>>Вопрос: почему принт эфом выводится значение 4? LVV>>Потому что это — постфиксный инкремент. В этом случае сначала выполняется присваивание, а потом увеличение значения. В н попадает неувеличенное значение.
ID>тогда как сделать чтобы выводилось увеличенное?
[Offtop] Раз уж разбираешься с массивами и указателями, то обрати сразу внимание на разницу между массивом, указателем и указателем на массив. Эти три понятия хоть и из одной пьессы, но, все же, это три разных "персонажа". А, судя по тому как ты выбрал название для темы, четкого понимания этого вопроса у тебя пока еще нет.
--
Справедливость выше закона. А человечность выше справедливости.