|
0 / 0 / 0
Регистрация: 13.12.2019
Сообщений: 47
|
||||||
Почему этот код не выполнится должным образом?21.10.2022, 12:13. Показов 4464. Ответов 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,306
|
||
| 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,306
|
|
| 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,306
|
||||||||||||
| 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,306
|
||
| 24.10.2022, 18:36 | ||
|
1
|
||
| 24.10.2022, 18:36 | |
|
Код выводится в браузер, а не обрабатывается должным образом. Не получается должным образом получить HTML код сайта программным способом Как изменить код программы чтобы все условия выполнялись должным образом? Почему невозможно открыть код таким образом и почему форма с ним никак не контактирует Не работает должным образом LZ-78 (компрессор) c++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|