如何检查C中的pow溢出?

如何检查C中的pow溢出?,c,overflow,pow,integer-arithmetic,int32,C,Overflow,Pow,Integer Arithmetic,Int32,我想计算x^y(x到y的幂),其中x和y都是int32\t。结果应该是一样的。如果存在溢出(也意味着:超出int32\t的范围),我希望捕获该溢出-最好在溢出发生之前捕获 这怎么可能 (我知道有相关的加减乘内置方法,但我不认为指数法有…)您可以使用自己的pow实现整数值(;另请参见注释),然后在该函数中使用内置的溢出检查进行乘法 这取决于您的用例是否值得这样做。或者,您可以在事后通过检查依赖于实现的错误结果来检测溢出。请澄清您是要执行pow还是XOR,因为运算符^XOR。@ieio我需要一个po

我想计算
x^y
(x到y的幂),其中x和y都是
int32\t
。结果应该是一样的。如果存在溢出(也意味着:超出
int32\t
的范围),我希望捕获该溢出-最好在溢出发生之前捕获

这怎么可能


(我知道有相关的加减乘内置方法,但我不认为指数法有…)

您可以使用自己的
pow
实现整数值(;另请参见注释),然后在该函数中使用内置的溢出检查进行乘法


这取决于您的用例是否值得这样做。或者,您可以在事后通过检查依赖于实现的错误结果来检测溢出。

请澄清您是要执行pow还是XOR,因为运算符^XOR。@ieio我需要一个
pow
,我使用了
^
符号作为这是我通常在“伪代码”中使用的对于指数…math.h中的
pow
不正常吗?在转换为整数之前,您可以检查结果是否存在溢出,所有32位整数都可以用
double
精确表示。您已经看到了吗?它使用一个带有对数的代数公式,它可以告诉您是否会出现溢出,我认为您可以调整它对于整数,它会消耗CPU。