Глава 5 - Старшинство операций |
Страница 11 из 21
В соответствии с принятым в языке Си порядком вычислений операции увеличения и уменьшения имеют очень высокий уровень старшинства; только круглые скобки обладают более высоким приоритетом. Поэтому выражение x*y++ означает (x)*(y++), а не (x*y)++, что очень удобно, поскольку последнее выражение смысла не имеет. (Операции увеличения и уменьшения применяются к переменной, в то время как произведение х*у само по себе не является переменной в отличие от сомножителей). Не путайте только старшинство этих операций с порядком вычислений. Предположим, у нас есть последовательность операторов: y = 2; Какое значение примет переменная nextnum? Подставляя в выражение соответствующие значения, получаем nextnum = (2 + 3)*6= 5*6 = 30 Только после того как выражение вычислено, значение переменной n увеличивается до 4. Старшинство операций говорит, что операция ++ имеет отношение только к n; кроме того, оно указывает, когда значение переменной n используется при вычислении выражения, но момент изменения значения n определяется семантикой данной операции. |