Задать вопрос
@Mercury13
Программист на «си с крестами» и не только

Насколько оправдан код на C++ в стиле Perl/PHP, с операцией || в роли if (!)?

Допустим, у нас есть функция
bool tryParseFloat(const wchar_t* aData, const wchar_t aPoint, double& rValue) {}

Такой код часто встречается на Perl или PHP, но насколько он ожидаем в C++?
tryParseFloat(data, L'.', value) || tryParseFloat(data, L',', value);

Пример синтетический и не совсем удачный, но принцип поняли.
  • Вопрос задан
  • 285 просмотров
Подписаться 1 Оценить 2 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Яндекс Практикум
    Разработчик C++ расширенный
    12 месяцев
    Далее
  • Яндекс Практикум
    Мидл разработчик С++
    4 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 2
maaGames
@maaGames
Погроммирую программы
НЕ стоит так писать. Оптимизатор вполне может сделать предвычисление аргументов функций до вызова самих методов и, если аргументы не тривиальные, то это может изменить логику программы. Да и вообще, такое читать довольно сложно и не очевидно.
Ответ написан
AtomKrieg
@AtomKrieg
Давай я поищу в Google за тебя
//! Brief description.
//function try to parse with aPoint decimal delimiter using position order in vector
//in example: if aPoint[0] fails try aPoints[1] etc...
bool tryParseFloat(const wchar_t* aData, const std::vector<wchar_t>& aPoint, float& rValue) {}

tryParseFloat(data, {L'.', L','}, value);

//или
bool tryParseFloat(const wchar_t* aData, const wchar_t* aPoint, float& rValue) {}

tryParseFloat(data, L".,", value);


Но я бы две такие сигнатурки сделал (не всегда нужно проверять результат парсинга):
float tryParseFloat(const wchar_t* aData, const std::vector<wchar_t>& aPoint, bool& result) {}
float tryParseFloat(const wchar_t* aData, const std::vector<wchar_t>& aPoint, float default_value = 0.0f) {}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы