|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » префиксный инкремент С |
|
префиксный инкремент С
|
Ветеран Сообщения: 1404 |
Профиль | Отправить PM | Цитировать #include <stdio.h> void main(){ int x,y; x=1; y=0; y = ++x + ++x ; printf("Y-%d , X-%d\n",y,x); } в выражении y = ++x + ++x ; после первого ++x x становится равным 2 и прибавляется к У, равному 0, таким образом y=0+2=2 после второго ++x x становится равным 3 и прибавляется к Y, равному 2, таким образом y=2+3=5 Однако после выполнения программа выдает что Y=6 Почему? Где ошибка в моих рассуждениях? |
|
Отправлено: 14:38, 10-01-2005 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Программа же транслируется на ассемблер. А там уже на низком уровне Optimizing Compiler находит способ экономить ячейки. Если компилить без оптимезации результат вполне может измениться.
|
Отправлено: 08:19, 11-01-2005 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1404
|
Профиль | Отправить PM | Цитировать >>Программа же транслируется на ассемблер.
Программа транслируется в машинные коды, то есть инструкции процессора, а ассемблер и машинные коды - это на мой взгляд не одно и то же. |
------- Отправлено: 10:31, 11-01-2005 | #12 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать Изобретаем велосипед. 100% это уже было, м/б даже на этом форуме
В детали ассемблер-коды предлагаю не лезть, это всего лишь детали. Принцип понятен, думаю, и без этого? В одном случае компилятор сразу делает инкременты х, потом действия. В другом - по очереди, слева направо, по ходу инкрементируя х. Соответственно, мы приходим к тому самому выводу : Цитата:
PS. Только оптимизация идёт не на этапе ассм->коды, а С->ассм. |
|
Отправлено: 11:07, 11-01-2005 | #13 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
|