Я пытался провести некоторые эксперименты с указателями на С++, я немного понял концепции приоритета, но следующая программа смешивается с моим разумом и не может ее понять.
КОД:
#include <iostream>
using namespace std;
int main() {
int x = 9;
int* ptr = &x;
cout << "The value of x is " << x << endl << "The value of ptr is " << ptr << endl << *ptr << endl << (*ptr)++ << endl << (*ptr)++ << endl << (*ptr)++ << endl;
return 0;
}
в этой программе начальное значение x равно 9, и я ожидаю, что компилятор даст мне значение x как 9, а затем увеличит его с помощью указателей, поэтому я ожидал, что ответ будет как 9, Address, 9, 10, 11, 12, но вместо этого ответ, который я получаю в каждом компиляторе, заключается в том, что значение x равно 12, а остальное похоже на это 12, Address, 11, 10, 9 Пожалуйста, помогите мне понять, что я новичок в C++
++(*ptr)
вместо(*ptr)++
для достижения желаемого результата.++x
увеличивает значениеx
, а затем возвращает новое увеличенное значение, аx++
увеличивает, но возвращает предыдущее значение. А по вашему вопросу вы хотели иметь поведение++x
. - person Arty   schedule 31.10.2020