考虑到强制转换为n
可能已经产生负值,如何确定从unsigned int
减去signed int
是否会翻转为负值呢?
示例
#include <iostream>
using namespace std;
int main(){
unsigned int i = 2147483647*2;
if((int)i - 1 < 0){
cout << "rolled over";
}
else {
i = 0;
}
return 0;
}
为了检查是否将从unsigned int
减去,您可以先将其强制转换为int
。但是,如果unsigned int
> max int值,则最终将为负。那么如何防止unsigned int
滚动呢?