最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

判断乘法溢出

来源:动视网 责编:小OO 时间:2024-12-12 17:11:33
文档

判断乘法溢出

Integer& Integer::operator *(Integer &a) { union { long long ll;long l[2];} temp;temp.ll = (long long)value * a.value;if (temp.l[1] == 0 || temp.l[1] == -1) return Integer(temp.l[0]);else { cout <;<;";Overflow";<;<;endl;} }。这种做法可以避免复杂的条件判断,提高了程序的执行效率。另外,直接将a和temp的符号进行比较,判断是否溢出的方法并不准确。例如。if(a>;0 == temp>;0)。
推荐度:
导读Integer& Integer::operator *(Integer &a) { union { long long ll;long l[2];} temp;temp.ll = (long long)value * a.value;if (temp.l[1] == 0 || temp.l[1] == -1) return Integer(temp.l[0]);else { cout <;<;";Overflow";<;<;endl;} }。这种做法可以避免复杂的条件判断,提高了程序的执行效率。另外,直接将a和temp的符号进行比较,判断是否溢出的方法并不准确。例如。if(a>;0 == temp>;0)。


如果只是想检查32位int型的乘法溢出,其实很简单。将结果存储在long long类型中,可以很容易地检测到溢出。例如:

Integer& Integer::operator *(Integer &a) { union { long long ll; long l[2]; } temp; temp.ll = (long long)value * a.value; if (temp.l[1] == 0 || temp.l[1] == -1) return Integer(temp.l[0]); else { cout << "Overflow" << endl; } }

这种做法可以避免复杂的条件判断,提高了程序的执行效率。

另外,直接将a和temp的符号进行比较,判断是否溢出的方法并不准确。例如:

if(a>0 == temp>0)

这里的a是从哪里来的?在前面已经判断过不会溢出了,下面的判断是多余的。

综上所述,更简洁且有效的判断方法是:

int temp = value + in.value; if ( (in.value>0) == (temp > value)) { return Integer(temp); } else { cout << "Overflow" << endl; return *this; }

这种判断方式不仅减少了代码量,而且提高了程序的运行速度。

此外,使用long long类型存储结果,可以轻松检测32位整数乘法的溢出情况,而无需复杂的条件判断。

总结来说,通过将结果存储在long long类型中,可以更简洁地判断32位int型的乘法是否溢出,同时提高程序的执行效率。

文档

判断乘法溢出

Integer& Integer::operator *(Integer &a) { union { long long ll;long l[2];} temp;temp.ll = (long long)value * a.value;if (temp.l[1] == 0 || temp.l[1] == -1) return Integer(temp.l[0]);else { cout <;<;";Overflow";<;<;endl;} }。这种做法可以避免复杂的条件判断,提高了程序的执行效率。另外,直接将a和temp的符号进行比较,判断是否溢出的方法并不准确。例如。if(a>;0 == temp>;0)。
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top