Re[6]: Внезапно, ||= и &&=
От: so5team https://stiffstream.com
Дата: 10.08.25 14:27
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>>>А почему нет оператора, который возвращает за раз частное и остаток от деления? Тоже тот случай, когда результат даёт одна ассемблерная команда, а по-сишному надо писать две строки (которые развернутся в две одинаковые команды, если компилятор достаточно наивен).


К>>функция std::div https://en.cppreference.com/w/cpp/numeric/math/div

К>>которая может быть реализована на конкретной платформе через какой-нибудь интринсик.

Pzz>С функцией, которав возвращает структуру, каждый может. Это было в Си, еще когда ANSI-стандарт был драфтом.


Pzz>Тут надо бы какой-нибудь вырвиглазный новый синтаксис. Ну, например, x, y = a /% b;


Продвинутый язык (а не убожества вроде Си и Go, говнокодить на которых вы привыкли) дает вам возможность сделать недостающее своими руками. Например, в самом примитивном виде:
#include <iostream>
#include <cstdlib>

namespace div_demo
{
    
struct div_result
{
    int quot;
    int rem;
};

struct div_operand
{
    int what;
};

[[nodiscard]]
div_result
operator/(div_operand x, int y)
{
    const auto r = std::div(x.what, y);
    return { r.quot, r.rem };
}

} // namespace div_demo

int main()
{
    using namespace div_demo;
    
    auto [q, r] = div_operand{5} / 2;

    std::cout << q << ", " << r << std::endl;
}


Pzz>И еще лет пять разгребать последствия. Например, можно ли результат такой операции использовать при вызове функции, и как сколько операндов он будет засчитан?


"Боярам впредь говорить не по писанному, дабы глупость каждого видна была".

Не надоело еще позориться?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.