基础数据类型-数字

因为做项目需要用到一个保存在本地的计数数字. 担心会因为数字溢出的问题导致错误. 所以下面测试无符号长整型的极限.

    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.
如果是有符号的数字. 溢出后就变成了负数.

你可能感兴趣的:(基础数据类型-数字)