我正在创建一个库,其中包含类似于 python 的概念。C 没有任何像 python 有 ( **
) 的幂运算符(例如pow(x,n)
,相当于x**n
在 python 中)。
我尝试使用预处理器指令来解决这个问题。但没有找到任何技巧。
由于 ^ 此运算符用于 XOR 运算,所以我认为它不能用于幂运算符(我们可以吗?)
所以替代解决方案是双星(**
),因为**
它是编译器无法识别的运算符,所以我们如何才能让编译器知道这一点。
为此提出方法或解决方案。
您不能向 C++ 添加新的运算符,因此使用**
(或其他一些新事物)已经过时了。此外,当双方都是内置类型时,您不能重载运算符,因此使用现有运算符(例如^
)来实现将浮点数/整数提升为浮点数/整数的幂也是不可行的。请参阅Stroustrup 的 C++ FAQ 上的这个问题(如下面的评论中所述。)
您可以实现自己的数字类并重载您想要的任何运算符,但这并不容易,也不会像您想象的那样“优雅”或酷。
所以,只需使用一个函数。