| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Нахождение четніх и нечетніх чисел |
| Автор: Simon14 25.1.2010, 01:58 | ||||
Всем доброго времени суток есть задача вібрать из масива четніе и нечетніе числа пробовал так но відает ошибгу посмотрите что можносделать и в чем моя ошибка
зарание всем спасибо Добавлено через 13 минут и 40 секунд вот сделал так
|
| Автор: Данкинг 25.1.2010, 02:13 |
| Какую ошибку-то? Мне кажется, что остаток от деления 4 на 2 всегда будет равен нулю. |
| Автор: Simon14 25.1.2010, 02:22 |
| уже сделал как привел выше но вопрос был в том как находить четные и нечетные числа с помошью mod |
| Автор: NewDima 25.1.2010, 11:41 | ||
Число четное:
Добавлено через 4 минуты и 55 секунд а mod - это и есть %. |
| Автор: Леопольд 25.1.2010, 12:33 | ||
Не делай так. Лучше вообще забудь про макросы. Тоже самое, но более безопасно:
|
| Автор: zim22 25.1.2010, 12:56 |
ну и зачем битовое НЕ применять? чем логическое не устраивает? |
| Автор: Леопольд 25.1.2010, 13:43 |
Опечатался, уже исправил |
| Автор: NewDima 25.1.2010, 14:52 | ||
Причина? |
| Автор: zim22 25.1.2010, 17:18 | ||
а теперь выводит 1 1 1 1
|
| Автор: NewDima 25.1.2010, 17:20 |
| baldina, у меня некорректно составленный макрос, согласен, забыл про скобки. Но вот вызов функции для проверки четности числа - ИМХО странное занятие. Инструкция inline всегда была для компилятором чем-то сродни пожеланию, или что-то изменилось, и вы гарантируете, что эта функция будет встроена в тело основного кода и дополнительные вызовы сгенерированы не будут? Добавлено через 24 секунды zim22, вот и я о том же |
| Автор: zim22 25.1.2010, 17:40 |
я просто код исправил. я тоже против макросов в данном случае. я бы его использовал, если бы: 1) у него было адское имя типа UGLY_MACROS_THAT_CHECK_WHETHER_VARIABLE_IS_EVEN_OR_NOT 2) после использования ему был бы сразу сделан #undef адское имя резало бы мне глаза и мне бы пришлось поменять макрос на функцию |
| Автор: NewDima 25.1.2010, 17:53 |
| Нет, я не говорю, что нужно пихать их куда ни поподя, но и говорить, что про макросы вообще нужно забыть без аргументации неправильно как-то. А вообще я php-программист, многого в плюсах и сях не знаю и мне действительно интересно, почему была высказана такая точка зрения. Может я тоже передумаю их использовать Добавлено через 1 минуту и 27 секунд Единственная проблема, которую я вижу - неподчинение пространствам имен |
| Автор: zim22 25.1.2010, 23:28 | ||
http://www.parashift.com/c++-faq-lite/inline-functions.html#faq-9.5 |
| Автор: Леопольд 26.1.2010, 02:05 | ||||||
На мой взгляд, этого уже достаточно
И не такое встраивается, независимо от того есть инлайн или нет. Даже если нет инлайн и компиляция будет не в дебаг а в релиз, то эта функция всё равно встроится, слишком она мала. Дешевле её встроить чем push потом call и следом pop. Для любого компилятора это не составит труда. Если не нравится функция, то лучше ручками записать проверку, чем использовать "удобный" макрос. |
| Автор: NewDima 26.1.2010, 04:46 |
| Леопольд, по поводу конкретно этих макросов я полностью согласен, и не считаю, что без них не обойтись. С минусами в принципе согласен, но нельзя иногда без них, или глупо просто смотрится код. Но это ни тот случай. zim22, спасибо за ссылку |
| Автор: baldina 26.1.2010, 12:52 |
| Я всего лишь продемонстрировал, что использование макросов менее удобно и более склонно к ошибкам. Раскрытие макросов зависит от контекста, не работает система типов, макросы вообще не являются частью языка. Про это сто раз писалось и говорилось. да, директива inline является советом, а не указанием. однако современные компиляторы в состоянии встроить даже то, что не является inline. и они это делают достаточно эффективно. всегда стоит предпочитать ясность кода, скорость разработки и удобство сопровождения сомнительной оптимизации. |
| Автор: dix75 26.1.2010, 21:01 | ||
|
| Автор: serg76 1.2.2010, 14:21 | ||
|