【问题标题】:Program of power operator in CC中的幂算子程序
【发布时间】:2013-11-16 15:32:25
【问题描述】:

我正在创建一个库,其中包含类似于 python 的概念。 C 没有任何像 python 那样的幂运算符 (**)(例如,pow(x,n) 相当于 python 中的x**n)。

我尝试使用预处理器指令来解决这个问题。但没有找到任何技巧。

由于 ^ 这个运算符是异或运算,所以我认为它不能用于幂运算符(可以吗?)

所以替代解决方案是双星(**),因为** 是编译器无法识别的运算符,所以我们如何让编译器知道这一点。

为此建议方法或解决方案。

【问题讨论】:

  • 只需使用pow。 Python 也有一个pow 函数。
  • 这并不容易,因为运算符解析和优先级需要改变。在大多数编译器中,这是编译器内部的。
  • C 不允许运算符重载。感谢上帝。
  • 创建您自己的新编程语言C**。祝你好运;)
  • 编写自己的预处理器是一种选择。一个疯狂的疯狂选择。

标签: c++ python c


【解决方案1】:

您不能在 C++ 中添加新的运算符,因此使用 **(或其他一些新事物)已被淘汰。此外,当双方都是内置类型时,您不能重载运算符,因此使用现有运算符(例如^)来实现将浮点数/整数提升为浮点数/整数的幂也是不可行的。请参阅this question on Stroustrup's C++ FAQ(如下面的 cmets 所述。)

您可以实现自己的数字类并重载您想要的任何运算符,但这并不容易,也不会像您想象的那样“优雅”或酷。

所以,只需使用一个函数。

【讨论】:

  • 同意。有关更多信息,请参阅此link 到 Stroustup 的 C++ Q&A 页面。它甚至使用了创建** 指数运算符的示例
猜你喜欢
  • 2017-02-02
  • 1970-01-01
  • 2013-09-14
  • 1970-01-01
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多