Так что меня смущает одна вещь, связанная с указателями. Давайте посмотрим на это:
*p++
Я знаю, что operator ++ "больше" (извините, я не знаю, как сказать, я не являюсь носителем английского языка), чем operator *. Это означает, что * p ++ фактически воспринимается как * (p ++). Так что меня смущает другой результат, когда * p ++ используется как lvalue и rvalue. Например:
Если я хочу суммировать все элементы массива, это будет нормально работать (используется как значение):
sum += *p++;
Мой вопрос здесь: почему это происходит сначала * p, а затем p ++, когда ++ больше *. Почему это сначала не произойдет p ++, а затем * p.
Но если я использую его как lvalue, он работает так, как я ожидал. Например:
*p++ = round(*p * 100) / 100;
Сначала происходит p ++, а затем этот новый номер присваивается * p.
Почему эти две вещи отличаются, когда они используются как rvalue и lvalue, я имею в виду, что я не понимаю, почему этот пример с суммой.
Спасибо:)