Возможно, вы неправильно поняли оператор post-increment
, который очень распространен среди начинающих, так что не волнуйтесь.Со временем вы все поймете правильно.
Взгляните на слово post-increment
.В нем есть слово post
, которое обычно означает after
.Это означает, что приращение произойдет after
все остальное было выполнено.Вот как я это запомнил.
Итак, если вы посмотрите на свою программу сейчас -
int main()
{
int w=3, z=7;
printf("%d\n", w++|z++);
}
, тогда станет ясно, что после того, как сама функция printf
был выполнен, приращение произойдет.Таким образом, вы получите значения w
и z
как 3
и 7
соответственно при оценке выражения второго аргумента printf
.
Официальный стандарт C ++ 11, (§5.2.6, окончательная версия) говорит -
Значением выражения postfix ++ является значение его операнда.[Примечание: полученное значение является копией исходного значения - примечание конца]
Таким образом, это означает, что значение выражения postfix w++
, является значением самого операнда, то естьзначение w
, которое равно 3, а значение второго выражения z++
будет равно 7. Эти значения будут затем использоваться при вычислении 3|7
, и после этого переменные будут увеличиваться.