![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 20.04.2009
Сообщений: 58
|
![]()
Приветствую, уважаемые форумчане!
В коде по С++ есть такое макроопределение: Код:
Код:
Задание такое: Расстановкой открывающих и закрывающих скобок в теле макроопределения добиться идентичного результата со стандартной функцией. Я пробовал сделать так, но это не помогло: Код:
|
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Тут ты что-то неудачный пример взял...
в случае с макроопределением у тебя код компилятор заменит на: Код:
А в max стандартном в параметрах передаются константы, т.е. y1++ для него не будет ничего означать, и останется y1 (ибо это константа-параметр), потому он и вернет тебе то что находится в y1 без инкремента. Поправь если я не прав, но по-моему именно так
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 20.04.2009
Сообщений: 58
|
![]()
Это один из примеров в моей лабе.
Судя по выводимым данным (2, 3) в макроопределении сначала происходит проверка, а затем увеличение, следовательно возвращаться будет уже увеличенное число. А в стандартной все так, как и должно быть) сначала печатается двойка, а затем она увеличивается, но это уже не играет никакой роли. Проблема в том, что именно с таким примером макроопределение должно вернуть двойку, а не тройку |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с макроопределением. | Lazio | Общие вопросы C/C++ | 0 | 24.03.2009 21:25 |
Проблема с рамами/Проблема с ЖД | DRAGGER | Компьютерное железо | 6 | 04.01.2009 23:37 |