![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » префиксный инкремент С |
|
префиксный инкремент С
|
Ветеран Сообщения: 1405 |
#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 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1405
|
Профиль | Отправить PM | Цитировать >>Программа же транслируется на ассемблер.
Программа транслируется в машинные коды, то есть инструкции процессора, а ассемблер и машинные коды - это на мой взгляд не одно и то же. |
------- Отправлено: 10:31, 11-01-2005 | #12 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать Изобретаем велосипед. 100% это уже было, м/б даже на этом форуме
![]() В детали ассемблер-коды предлагаю не лезть, это всего лишь детали. Принцип понятен, думаю, и без этого? В одном случае компилятор сразу делает инкременты х, потом действия. В другом - по очереди, слева направо, по ходу инкрементируя х. Соответственно, мы приходим к тому самому выводу : Цитата:
![]() PS. Только оптимизация идёт не на этапе ассм->коды, а С->ассм. |
|
Отправлено: 11:07, 11-01-2005 | #13 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
|