|
0 / 0 / 0
Регистрация: 13.12.2019
Сообщений: 47
|
||||||
Почему этот код не выполнится должным образом?21.10.2022, 12:13. Показов 4500. Ответов 51
На одном форуме наткнулся на то, что одному парню на собеседовании задали написать функцию нахождения минимума, он написал следующим образом:
min(a, b+1) у меня вопрос, почему не работает? я запустил и он работает. (параметры стоило бы сделать константными, да, но почему код не отработает должным образом?)
0
|
||||||
| 21.10.2022, 12:13 | |
|
Ответы с готовыми решениями:
51
Не понимаю почему программа не работает должным образом Почему текст в колонках DataTables не форматируется должным образом? |
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||
| 21.10.2022, 19:30 | ||||||||
&b может быть как операцией взятия адреса, так и частью декларации ссылочного типа.
&имя,однако в зависимости от контекста, амперсанд означает разные вещи.
0
|
||||||||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,312
|
||
| 21.10.2022, 19:46 | ||
|
В языке С++ & означает "адрес где эта переменна лежит" только в выражениях.В объявлениях же & имеет совсем другой смысл.
0
|
||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
||||||
| 21.10.2022, 20:01 | ||||||
|
Ещё есть битовый оператор, там тож не про адрес
0
|
||||||
|
101 / 95 / 10
Регистрация: 31.08.2022
Сообщений: 1,014
|
|
| 21.10.2022, 21:36 | |
|
0
|
|
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,312
|
|
| 21.10.2022, 21:40 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 13.12.2019
Сообщений: 47
|
|
| 23.10.2022, 13:55 [ТС] | |
|
да, суперский ответ, я знаю про временные объекты и для меня был странно, что код у меня нормально вызывается, но теперь ясно, что я подключил область видимости библиотеки stl и у меня банально вызывалась функция min из stl, так как она больше подходит(вернее только она и подходит), чем моя функция.
Спасибо больше Добавлено через 9 минут AlexVRud он еще ответил, что можно использовать smartpointerы вместо const, но не совсем понятно, что он имел в виду. Вот их диалог(взял с сайта другого) - Напишите функцию минимума. - Ну да мы глобальным дефайном пользовались, что в движке нашем, там типа #define MIN(a, b) ((a<b)?a:b) только со скобочками как то хитро и вообще я синтаксис не помню. - Напиши ручкой на листке функцию минимума, синтаксически правильную, которая компилировалась бы. - Я задумался. И написал (http://www.cplusplus.com/refer... thm/min/): template <class T> T& min (T& a, T& b) { return (a<b)?a:b; } - Окей, тогда вот такой вариант вызова у вас не сработает должным образом: min(a, b+1) - Я задумался ещё крепче, ведь если создавать на сревнении лишнюю переменную временную, типа T& min (T a, T b), то при сравнении массивов мы вполне получим печаль. Думал минуты три. - Давайте на этом завершим, вы не сможете ответить на дальнейшие вопросы если задумались над этим. Досвидания. Это был первый вопрос что мне задали, и последний. Пока мы ехали в лифте, я спросил у собеседующего: - А как правильно? - Во первых, вы не написали const. А что касается передачи параметров - обычно ответом на этот вопрос вспоминают о смартпоинтерах.. а зачем смартпоинтеры ?
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 23.10.2022, 15:00 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 13.12.2019
Сообщений: 47
|
|||||||
| 23.10.2022, 15:09 [ТС] | |||||||
|
hoggy
0
|
|||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||||||
| 23.10.2022, 19:33 | |||||||||||||||||
|
взрослые люди понимают: нужно что бы на машинах пользователей работало. https://rextester.com/QGXE24019
на который рассчитывал пользователь? причина такого поведния - UB, вызванное использованием невалидной ссылки.
0
|
|||||||||||||||||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,312
|
||||||||||||
| 23.10.2022, 22:24 | ||||||||||||
std::min, которая устроена точно так же. Но в вашем конкретном примере все "работает" лишь случайно.Переданные вами временные объекты будут уничтожены и об этом нужно помнить при использовании таких функций. Но уничтожены они будут не сразу после возвращения из функции min, как вам неправильно написали выше, а только в конце полного выражения, содержащего вызов этой функции. Поэтому вы можете предавать полученную ссылку куда угодно дальше в рамках все того же полного выражения и ссылка будет оставаться работоспособной.Например
min нет. Болтовня про "плохой дизайн" в данном случае - просто болтовня ради болтовни.
0
|
||||||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 24.10.2022, 04:17 | |
|
0
|
|
| 24.10.2022, 04:31 | ||
|
Не по теме:
Фактически, все бредни которые гонят в этот форум подобные болтуны и ламеры - вариации этой же демагогии. Просто не обращайте на них внимания.
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 24.10.2022, 04:50 | ||
|
и о чудо! за примерами далеко ходить не пришлось.
0
|
||
|
0 / 0 / 0
Регистрация: 13.12.2019
Сообщений: 47
|
|||||||
| 24.10.2022, 14:04 [ТС] | |||||||
|
TheCalligrapher
но в моем случае я же потом вызываю cout, после выражения, в котором min, и получаю нужный результат(хотя в gcc компиляторе выдает неправильный результат, но как я понял, по правилам там должна быть ошибка). Но правильно ли я понимаю, что раз так, то всегда нужно результат выполнения min записывать по значению? если хочешь использовать его и дальше, а не только в выражении min. то ест вот так: int dw = min(a1 + 1, b1); а не const int &dw = min(a1 + 1, b1); Добавлено через 8 минут
В любом случае мы передаем аргумент
0
|
|||||||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
|
| 24.10.2022, 14:39 | |
|
0
|
|
|
|
||
| 24.10.2022, 14:44 | ||
|
Не вижу ничего ужасного в UB-коде "а у меня компилируется в рабочий код". Мы ж его не отдаём в виде исходников всему миру. Сделали сборку с конкретными нужными нам условиями, протестировали и можно быть уверенным в бинарнике. Зачем давать гарантии того, что код одинаково скомпилируется и для тостера и для денди-плейстейшн. Если мы под них не делаем сборок?
0
|
||
|
|
||
| 24.10.2022, 15:54 | ||
|
hoggy, какие же айтишники душнилы...
Добавлено через 1 минуту твоя цитата
0
|
||
|
0 / 0 / 0
Регистрация: 13.12.2019
Сообщений: 47
|
||
| 24.10.2022, 17:22 [ТС] | ||
0
|
||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,312
|
||
| 24.10.2022, 18:36 | ||
|
1
|
||
| 24.10.2022, 18:36 | |
|
Код выводится в браузер, а не обрабатывается должным образом. Не получается должным образом получить HTML код сайта программным способом Как изменить код программы чтобы все условия выполнялись должным образом? Почему невозможно открыть код таким образом и почему форма с ним никак не контактирует Не работает должным образом LZ-78 (компрессор) c++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов.
Логика кажется понятной:
1. Находим ключевые слова.
2. Добавляем их на. . .
|
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302
Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
|