数据类型——long long

在C语言中,long long 类型是一种有符号的64位整数,其取值范围由二进制补码表示法决定。以下是具体数值及解释:


1. long long 的最大值

  • 最大值(正数)9223372036854775807
    计算方式2^63 - 1
    这是因为最高位是符号位(0表示正数),剩余的63位用于数值。

  • 最小值(负数)-9223372036854775808
    计算方式-2^63
    二进制补码表示法中,负数的最小值比正数最大值多一个单位。


2. 如何获取这些值?

C标准库 <limits.h> 中定义了以下宏,可直接在代码中使用:

  • LLONG_MAX:表示 long long 的最大值(9223372036854775807)。
  • LLONG_MIN:表示 long long 的最小值(-9223372036854775808)。
示例代码:
#include <stdio.h>
#include <limits.h>

int main() {
    printf("long long 最大值: %lld\n", LLONG_MAX);
    printf("long long 最小值: %lld\n", LLONG_MIN);
    return 0;
}

3. unsigned long long 的最大值

若使用无符号类型 unsigned long long(64位全用于数值):

  • 最大值18446744073709551615
    计算方式2^64 - 1
  • 对应的宏为 ULLONG_MAX
示例代码:
#include <stdio.h>
#include <limits.h>

int main() {
    printf("unsigned long long 最大值: %llu\n", ULLONG_MAX);
    return 0;
}

4. 应用场景

  • 大整数计算:处理超过 intlong 范围的数值(如金融计算、科学模拟)。
  • 避免溢出:在循环或数学运算中,确保结果不超出范围。例如:
    long long a = LLONG_MAX;
    long long b = 1;
    long long sum = a + b; // 这里会导致溢出(未定义行为)!
    
    需通过条件判断或使用大数库(如GMP)来规避溢出风险。

5. 注意事项

  • 平台兼容性:C标准规定 long long 至少为64位,但实际大小可通过 sizeof(long long) 验证。
  • 打印格式:使用 %lld%llu 正确格式化输出:
    long long x = 123456789012345LL;
    unsigned long long y = 18446744073709551615ULL;
    printf("%lld, %llu\n", x, y);
    

总结

类型最大值最小值宏定义
long long9223372036854775807-9223372036854775808LLONG_MAX/MIN
unsigned long long184467440737095516150ULLONG_MAX

如果需要处理更大的数值,需依赖高精度库(如GMP)或自定义数据结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值