Унарные операторы + , , * и & имеют более высокий приоритет, чем те же бинарные операторы.
Заметим, что приоритеты побитовых операторов & , ^ и | ниже, чем приоритет == и != , из-за чего в побитовых проверках
Си подобно многим языкам не фиксирует очередность вычисления операндов оператора
f может быть вычислена раньше g или наоборот
Чтобы обеспечить нужную последовательность вычислений, промежуточные результаты можно запоминать во временных переменных.
Очередность вычисления аргументов функции также не определена, поэтому на разных компиляторах
может давать несовпадающие результаты. Результат вызова функции зависит от того, когда компилятор сгенерирует команды увеличения n - до или после обращения к power. Чтобы обезопасить себя от возможного побочного эффекта, достаточно написать ++n;