unsigned long long类型数据,相加或者相乘,怎么判断溢出?
这个就用到了数学方面的知识了,你只需要对两个数分别取对数,并且看看他们的和是否大于等于64就行了。
log2(a)+log2(b) >= 64
就是溢出,这两个方法需要包含math.h
用汇编就简单了, 标志寄存器里面有一个溢出标志位 OF, 检查这个标志位就可以了.
或者两数相加,判断它们的和如果小于某一个数则证明溢出
用unsigned long long类型所允许的最大值,减去或者除去其中一个减数或者因数,用所得结果与被减数或者另一个因数比较大小,前者大则没有溢出,否则溢出。
比如:五位数 * 五位数 的结果是 十位数(5 + 5)。先获取两个 long long 变量**数字**的长度,再相加,超过long long 规定的范围就超了