因为做项目需要用到一个保存在本地的计数数字. 担心会因为数字溢出的问题导致错误. 所以下面测试无符号长整型的极限.
int count = 0;
NSUInteger integer = 1;
NSInteger maxInteger = 0;
while (integer) {
integer*=2;
count++;
maxInteger = (integer * 2 - 1);
if (maxInteger == 0) {
while (integer) {
integer++;
NSLog(@"%lu", (unsigned long)integer);
}
}
NSLog(@"%lu", (unsigned long)integer);
}
NSLog(@"%lu", (unsigned long)maxInteger);
NSLog(@"%d", count);
18446744073709551615
64
从输出的千兆结果来看. 担心是多余的.
敲下小黑板. 重点是溢出后变成了0.
如果是有符号的数字. 溢出后就变成了负数.