Я делаю первые шаги в C ++, обладаю хорошим опытом в Java. Мне нужно прояснить некоторые особенности оператора ++ в C ++. Рассмотрим следующую программу:
#include <iostream>
using namespace std;
void __print(int x, int *px) {
cout << "(x, *px) = (" << x << ", " << *px << ")" << endl;
}
int main() {
int x = 99;
int *px = &x;
__print(x, px);
x++; __print(x, px);
x = x + 1; __print(x, px);
*px = *px + 1; __print(x, px);
*px++; __print(x, px);
return 0;
}
Удивительно для меня, программа печатает:
(x, *px) = (99, 99)
(x, *px) = (100, 100)
(x, *px) = (101, 101)
(x, *px) = (102, 102)
(x, *px) = (102, 134514848)
Кажется, что * px = * px + 1 не имеет такого же эффекта на * px, как на x. Но разве это не то же самое ??? Разве это не * px == x?