История изменений
Исправление lenin386, (текущая версия) :
Ну, вот ты такой умный, а я языки плохо знаю. Вот объясни мне по-русски, как в последнем примере может получиться не 2 и с какого перепугу там undefined behavior. Есть совершенно чёткий приоритет арфиметических операций. Прописанный ещё в с89 или ещё раньше. Эту таблицу студентиков зубрить заставляют, чего они не делают. Сначала выполняется i++, возвращает 0. Потом ++i, возращает 2. Потом +. Итог 2. Иначе быть не может. Только если в багованных компиляторах. Но если писать код, расчитанный на них, можно рехнуться. Конечно, такой код писать нельзя, это называется труднопонимаемые трудночитаемые приёмы. Но тем не менее.
Исправление lenin386, :
Ну, вот ты такой умный, а я языки плохо знаю. Вот объясни мне по-русски, как в последнем примере может получиться не 2 и с какого перепугу там undefined behavior. Есть совершенно чёткий приоритет арфиметических операций. Прописанный ещё в с89 или ещё раньше. Сначала выполняется i++, возвращает 0. Потом ++i, возращает 2. Потом +. Итог 2. Иначе быть не может. Только если в багованных компиляторах. Но если писать код, расчитанный на них, можно рехнуться. Конечно, такой код писать нельзя, это называется труднопонимаемые трудночитаемые приёмы. Но тем не менее.
Исправление lenin386, :
Ну, вот ты такой умный, а я языки плохо знаю. Вот объясни мне по-русски, как в последнем примере может получиться не 2 и с какого перепугу там undefined behavior. Есть совершенно чёткий приоритет арфиметических операций. Прописанный ещё в с89 или ещё раньше. Сначала выполняется i++, возвращает 0. Потом ++i, возращает 2. Потом +. Итог 2. Иначе быть не может. Только если в багованных компиляторах. Но писать код, расчитанный на них, можно рехнуться. Конечно, такой код писать нельзя, это называется труднопонимаемые трудночитаемый приёмы. Но тем не менее.
Исходная версия lenin386, :
Ну, вот ты такой умный, а я языки плохо знаю. Вот объясни мне по-русски, почему в последнем примере может получиться не 2. Есть совершенно чёткий приоритет арфиметических операций. Прописанный ещё в с89 или ещё раньше. Сначала выполняется i++, возвращает 0. Потом ++i, возращает 2. Потом +. Итог 2. Иначе может быть только в багованных компиляторах. Если писать код, расчитанный на них, можно рехнуться.