Что за оператор −−> в С++?



Это старый хитрый вопрос. В С++ нет оператора −−>.



Рассмотрим такой код:



if (p−−>m == 0) f(p);



Выглядит так, как будто и правда есть оператор −−>, и если правильно объявить переменные p и m, то код даже скомпилируется и запустится:



int p = 2;

int m = 0;

if (p−−>m == 0) f(p);



Это означает: если p−− больше чем m (а это так), то надо сравнить результат (true) с нулём. Ну, true != 0, так что результат всего выражения — false, и функция f() не вызовется. Другими словами:



if ((p−−) > m == 0) f(p);



Пожалуйста, не тратьте много времени на подобные вопросы. Они сбивали с толку новичков ещё до того, как появился С++.