![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Lamak |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 204 Регистрация: 8.5.2005 Где: Украина,Одесса Репутация: нет Всего: 7 |
Отвечая на вопрос что напечатает прога
я ответил 30 30 ![]() ![]() Обьясните почему она печатает другую строку. --------------------
Роботы - это интересно и увлекательно! |
|||
|
||||
Illuminaty |
|
|||
![]() /*Антон Захаров*/ ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1238 Регистрация: 19.3.2005 Где: Россия, Казань Репутация: нет Всего: 56 |
Видимо, она напечатала 30 31? a++ - Печатает a, увеличивает a на 1 a-- - печатает a+1, уменьшает (a+1) на 1 |
|||
|
||||
AISIN |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 27.1.2005 Где: Пушкино Репутация: нет Всего: 1 |
точно!!!
Lamak Вам нужно разобраться с инкрементом и декриментом. --------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002% |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
на самом деле она печатает 29 30
![]() -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
HELPER |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 18.4.2005 Репутация: -2 Всего: -2 |
29 30 а почему так происходит??
ведь а = 30... как а++ = 29?... Добавлено @ 14:38 даже если:
выводит 29 30!!! че ето инкремент не работает... |
|||
|
||||
Illuminaty |
|
|||
![]() /*Антон Захаров*/ ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1238 Регистрация: 19.3.2005 Где: Россия, Казань Репутация: нет Всего: 56 |
А так "нормально" выводит 30 31. Я уже не знаю что такое "нормально" ![]() |
|||
|
||||
Alastis |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 15.11.2004 Где: Казахстан, Астана Репутация: 4 Всего: 10 |
да... любопытно... 29 30
-------------------- Прости, что я говорю, когда ты меня перебиваешь. |
|||
|
||||
Alastis |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 15.11.2004 Где: Казахстан, Астана Репутация: 4 Всего: 10 |
а ну да, все правильно... вычисление идет справа налево как положено
![]() -------------------- Прости, что я говорю, когда ты меня перебиваешь. |
|||
|
||||
Illuminaty |
|
|||
![]() /*Антон Захаров*/ ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1238 Регистрация: 19.3.2005 Где: Россия, Казань Репутация: нет Всего: 56 |
Точно. Браво! |
|||
|
||||
Lamak |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 204 Регистрация: 8.5.2005 Где: Украина,Одесса Репутация: нет Всего: 7 |
Из вышесказаного я понял так , что сначало выполняется a-- и a=29;
потом а печатается и оператором а++ получается 30 и печатается. Кажется так. ![]() --------------------
Роботы - это интересно и увлекательно! |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Э-э, люди, а это случаем не undefined behaviour? (5.4) Долго вчитывался в стандарт: сначала по выражениям, а потом по требованиям к потокам - но истины так и не постиг
![]() ![]() MSVC 7.1: 30 30 Intel 7.1: 30 31 CBuilder 6: 29 30 -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Alastis |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 15.11.2004 Где: Казахстан, Астана Репутация: 4 Всего: 10 |
у меня как раз 7.1, а результат 29 30 -------------------- Прости, что я говорю, когда ты меня перебиваешь. |
|||
|
||||
Lamak |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 204 Регистрация: 8.5.2005 Где: Украина,Одесса Репутация: нет Всего: 7 |
Я разобрался и работает оно не так,а вот как: Компилятор обрабатывая строку
,сначала вычисляет выражения в обратном порядке как положенно и делает это так: - записывает в стек для cout а=30 - вычисляет -- : присваевает а=29 - записывает в стек для cout а=29 - вычисляет ++: присваевает а=30 Потом cout печатает данные из стека т.е. 29 30. ![]() --------------------
Роботы - это интересно и увлекательно! |
||||
|
|||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Вот уж не знаю ![]() А вообще, все это не имеет значения: есть факт - три компилятора выдали три разных результата для элементарной конструкции. Значит, что-то в ней не так. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Alastis |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 15.11.2004 Где: Казахстан, Астана Репутация: 4 Всего: 10 |
а вот это уже действительно любопытно: компилирую в Debug - результат 29 30, в Release - 30 30
-------------------- Прости, что я говорю, когда ты меня перебиваешь. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |