大佬教程收集整理的这篇文章主要介绍了c – 整数除法溢出,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在考虑整数(类型int)溢出,并且我发现除法可能溢出.
INT_MIN == -INT_MAX - 1
因此
INT_MIN < -INT_MAX
因此
INT_MIN / -1 > -INT_MAX / -1
因此
INT_MIN / -1 > INT_MAX.
因此,除法(INT_MIN / -1)确实溢出.
问题
所以,我有两个问题:
>可以编写什么(跨平台)C@L_674_2@以防止除法溢出(对于类型(带符号)int)?
>什么保证(在C或C标准中)可能有助于设计@L_674_2@?
例如,如果标准保证我们有
INT_MIN == -INT_MAX - 1
要么
INT_MIN == -INT_MAX,
然后出现以下@L_674_2@以防止溢出.
#include <limits.h> /* Try to divide Integer op1 by op2. Return 0 (success) or 1 (possibly overflow prevented). In case of success,write the quotient to res. */ int safe_int_div(int * res,int op1,int op2) { /* assert(res != null); */ /* assert(op2 != 0); */ if ( op1 == INT_MIN && op2 == -1 ) { return 1; } *res = op1 / op2; return 0; }
以上是大佬教程为你收集整理的c – 整数除法溢出全部内容,希望文章能够帮你解决c – 整数除法溢出所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。