Что вернёт atof
- Войдите на сайт для отправки комментариев
Ср, 23/09/2020 - 17:33
Пара вопросов .
1. какое значение вернёт функция ATOF если входной string содержит абракадабру?
2. Работает ли конструкция IF если сравниваемые данные разных типов (одно int другое float)?
float a=1;
int b=2;
if (a > b) {.........
Пара вопросов .
Один ответ: запустите, попробуйте и расскажите нам - будем знать.
ArgusSW, и не лень вам было набирать сообщение? - лучше бы программу в Ардуино набрали - сразу бы и узнали ответ.
Да и полезнее всегда самому разобраться. чем у других спрашивать.
На уроке сидел, вопрос задали, похоже ))))
Google "atof" -> http://www.cplusplus.com/reference/cstdlib/atof/
Return Value
On success, the function returns the ...
ArgusSW, и не лень вам было набирать сообщение? - лучше бы программу в Ардуино набрали - сразу бы и узнали ответ.
Не трудно догадаться что наверное нет сейчас такой возможности
If the first sequence of non-whitespace characters in str does not form a valid floating-point number as just defined, or if no such sequence exists because either str is empty or contains only whitespace characters, no conversion is performed and the function returns
0.0
.Я так понимаю что эта строка содержит ответ. Но порождает другой. Надо спарсить строку и извлечь из неё параметр, который может принимать и нулевое значение. Как быть? как понять что фунция смогла сконвертить и вернула значение а не 0 в смысле пусто?
Не трудно догадаться что наверное нет сейчас такой возможности
Если у Вас сейчас нет возможности запустить и проверить, значит нет и возможности его (atof) использовать. Когда появится, запустите, проверите и расскажете нам.
Но порождает другой. Надо спарсить строку и извлечь из неё параметр, который может принимать и нулевое значение. Как быть? как понять что фунция смогла сконвертить и вернула значение а не 0 в смысле пусто?
Вот, правда, не верю, что Вы не можете решить этот вопрос просто подумав несколько минут. Подумайте и решите. Чего сразу постить, не успел ещё вопрос возникнуть?
Не трудно догадаться что наверное нет сейчас такой возможности
Если у Вас сейчас нет возможности запустить и проверить, значит нет и возможности его (atof) использовать. Когда появится, запустите, проверите и расскажете нам.
А вам вот не лень воду лить? Или скучно?
Мне? Нет не лень. Мне лень идти стелаж варить, а так вроде и делом занят - не иду.
я так и думал. потрындеть. Бывает. :)
А вам вот не лень воду лить? Или скучно?
а вам не лень в форуме мусорить?
многие новички почему-то считают, что форум - это замена учебнику или гуглю. типа если лень самому в книжке искать - напиши на форум, знатоки сразу ответ на блюдечке принесут.
У нас - не так. У нас таких новичков гнобят.
Прошу прощения - но этот раздел вроде как "песочница" называется. Я пересмотрел с десяток сайтов и мануалов и не нашел ответа. Подумал что помогут знающие но походу ошибся. :)
Я пересмотрел с десяток сайтов и мануалов и не нашел ответа.
пересмотрел десяток сайтов, вместо того чтоб запустить 2 строки кода? - или "десяток сайтов" - это только фигура речи, а на самом деле вы и одного не дочитали?
Возможно, вы не нашли ответа, потому что понятие "абракадабра" не имеет четкого определения и поэтому в мануалах про это ничего нет. Поэтому самый простой метод - это взять свои примеры "абракадабры" и скормить их реальному коду.
а уж если по результатам возникнут вопросы - вот тогда приходите. Будем разбираться. Но только с примером кода и абракадабры, а иначе разговора не получится, вот как сейчас.
Я пересмотрел с десяток сайтов и мануалов и не нашел ответа.
Это про atof? Или про "другой вопрос"? Если про atof, то Вы лжёте - достаточно прочитать её описание, которое есть на любом заборе (ну или запустить и посмотреть), а уж в десятках "сайтов и мануалов" ответа не найти невозможно. А если про "другой вопрос", то тем более лжёте - он у Вас только что возник, когда бы Вы смотрели десятки "сайтов и мануалов"?
В общем, в любом случае - это "типичный случай так называемого вранья".
Подумал что помогут знающие
Помочь можно только тому, кто сам делает. Начните делать самостоятельно и отношение к Вам изменится.
Я ведь Вам дал очень дельный совет - просто запустить и посмотреть, но Вы решили, что это не барское дело. Ну, извините, тарелочки с голубыми каёмочками закончились :-(
походу ошибся. :)
Таки, да.
Не на чем запустить. всем спасибо.
Не на чем запустить. всем спасибо.
ардуины нет, линукса нет, С в винде тоже нет?
симуляторы в гугле все забанили?
- тогда зачем вам это знание?
If the first sequence of non-whitespace characters in str does not form a valid floating-point number as just defined, or if no such sequence exists because either str is empty or contains only whitespace characters, no conversion is performed and the function returns
0.0
.По новым правилам If str does not point to a valid C-string, or if the converted value would be out of the range of values representable by a
double
, it causes undefined behavior.Написать свой аналог atof или анализировать строку перед тем как передавать ее на конвертацию.
Ну был не прав. Не на уроке - домашнее задание, похоже, всё-таки.
уже дважды неправ. :)
Блок GSM управления отоплением дачи. Изначально написал проверку на фиксированные команды,потом захотелось расширить функционал и задумался над парсингом строки из GSM модуля. Год назад попытался сделать - не получилось, время поджимало поставил как есть. Сейчас опять холода на носу надо резко доделать :)
Полагаю, что прежде конвертации надо проверить строку на наличие символов, отличных от цифр и десятичной точки.
Ага, и точка должна быть максимум одна.
команда будет что то типа tempa20 - где temp это команда, a-b-c-d номера каналов, в конце целевая температура. в принципе если соблюдать формат команды всё и так будет работать. мне интересно что произойдёт если придёт некорректная смс. Так сказать защита от дурака.
Взорвется котел, что ж ещё может быть.
исключено. Термозащита и механический регулятор ещё две ступени. Максимум что будет - это отопление будет наяривать впустую, либо не нагреет к приезду. И то и другое не страшно, но нежелательно.
Главный вопрос - нафига для такого парсинга atof?
1. Научитесь правильно вставлять код, чтобы были номера строк. В таком виде работать невозможно.
2. Вставляйте код целиком - здесь у Вас совершенно неясно какие типы имеют те или иные данные.
3. Напрасно Вы так думаете. В строке №ХЗ Вы запоминаете результат substring, а в строке №ХЗ пихаете этот результат atof'у. А теперь ответьте, какой тип данных возвращает substring и какой требуется atof'у?
Оно самое. См. замечание №3 из моего предыдущего поста.
И ещё раз перечитайте остальные два замечания. С этого момента я не комментирую неправильно вставленный код и не пытаюсь догадываться какие там типы.
Спасибо ЕвгенийП, очень содержательно, помогло несказанно. Как на форуме линуксоидов побывал. :)
Если Вам что-то непонятно из объяснений, можно задать уточняющий вопрос, а можно съязвить. Вы выбрали второе - удачи Вам и попутного ветра! Если передумаете, обращайтесь, только не забываем про правильную вставку кода.
Брат, если ты не понимаешь, что написано в сообщении #27 и в п.3 сообщения #28, то тебе ещё рано писать парсинг строки. Ты его не напишешь ни с какими подсказками, т.к. не знаешь самых базовых вещей на которых такие вещи строятся. Не веришь - можешь поспорить и послать меня "на", только ситуация от этого не улучшится, а она такая, как я описал.
Так что вариантов у тебя три:
Я бы выбрал первый вариант, а ты - это тебе решать.
Да работает уже всё, сам разобрался. Удачи.
А чего тогда мозг выносил? Троллоло?
А чего тогда мозг выносил? Троллоло?
да врет небось.
1
одной строкой написать что перед atof надо преобразовать переменную string в char.
дорогой, это первое, что написано в любом описании этой команды. Чуть выше вы били себя в грудь, что изучили "десяток мануалов".... ну понятно, да? :)
Читал, но... После PHP пока трудновато иметь ввиду что здесь два способа представления строк. В итоге читаешь мануал к одному языку а в голове понятия от другого.
одной строкой написать что перед atof надо преобразовать переменную string в char.
Знаете, я всегда пишу (изначально) с уважением к собеседнику. Я никогда не говорю как мартышке "делай раз, делай два, ...", а всегда даю наводящий намёк, в данном случае, таким намёком был вопрос "какой тип данных возвращает substring и какой требуется atof'у?" в расчёте на то, что человек умён и мотивирован, и дальше сделает сам. Если Вы предпочитаете, чтобы с Вами общались не как "коллега с коллегой", а как "сержант с рядовым", то это не ко мне.
Кстати, в данном случае намёк сработал, Вы самостоятельно допёрли что там с типами, и я рад этому. Только вот вместо благодарности я увидел от Вас обсёр и ц.у. как надо было писать. Впредь подумаю, помогать Вам или ну его нафиг.
P.S. Прочитав Ваш ответ, могу добавить - уже подумал :-)
Евгений, жаль что вы не стали вчера варить стеллаж. :)
Евгений, жаль что вы не стали вчера варить стеллаж. :)
Аргус, не надоело огрызаться то? Вы с чем-то не согласны? Считаете, что все обязаны по первому вашему кивку бежать к вам с учебниками, обучающими материалами, готовым кодом?
Вам не кажется, что если это хобби - Вы сами должны приложить усилия, что-то почитать. попробовать написать код? А если вам просто нужен результат - пойдите и купите его в магазине.
Евгений, жаль что вы не стали вчера варить стеллаж. :)
Ничего, я займусь этим в тот момент, когда Вы снова прибежите на форум с просьбой о помощи. Самое время будет стелажом заняться :-)
удалите топик как не содержащий ничего полезного и успокойтесь. Всем хорошего дня. :)
удалите топик как не содержащий ничего полезного и успокойтесь. Всем хорошего дня. :)
никаких выводов не сделано.
сделано. вы их сразу и подсказали во втором вашем посте. Действительно проще разобраться самому :)
А топик действительно бесполезный вышел. Не согласны?
сделано. вы их сразу и подсказали во втором вашем посте. Действительно проще разобраться самому :)
это хорошо, значит как раз есть польза от топика