Программа энергетического оператора на С

0

Я создаю библиотеку, которая будет иметь концепцию подобного типа python. C не имеет никакого силового оператора, например python (**) (например, pow(x,n) эквивалентно x**n в python).

Я попытался решить эту проблему, используя директиву Pre-Processor. но не нашел никакого трюка.

Поскольку ^ этот оператор для операции XOR, поэтому я думаю, что он не может быть использован для оператора мощности (можем ли мы?)

поэтому альтернативное решение является двойной звездой (**), потому что ** является непризнанным оператором для компилятора, поэтому как мы можем сделать это известным компилятору.

предлагайте подход или решение для этого.

  • 9
    Просто используйте pow . У Python тоже есть функция pow .
  • 1
    Это не легко, так как разбор оператора и приоритет должны быть изменены. В большинстве компиляторов это является внутренним для компилятора.
Показать ещё 5 комментариев
Теги:

1 ответ

3
Лучший ответ

Вы не можете добавить новых операторов в C++, поэтому использование ** (или какой-либо другой новой вещи) отсутствует. Кроме того, вы не можете перегружать операторы, когда обе стороны являются встроенными типами, поэтому использование существующего оператора (например, ^) для реализации создания float/ints для полномочий, которые являются float/ints, также отсутствует. См. Этот вопрос в FAQ Stroustrup C++ (как упоминается в комментариях ниже).

Вы можете реализовать свой собственный числовой класс и перегрузить любого оператора, которого вы хотите для него, но это будет нелегко, и это будет не так "элегантно" или круто, как вы думаете.

Итак, просто используйте функцию.

  • 2
    Согласовано. См. Эту ссылку на страницу вопросов и ответов Stroustup C ++ для получения дополнительной информации. Он даже использует пример создания ** оператора степени

Ещё вопросы

Сообщество Overcoder
Наверх
Меню