一句话理解
long long 是 64 位整数,信奥里防溢出的默认选择。
为什么要学
大纲特别强调:很早就要养成用 long long 防溢出的意识。
讲解
范围大约到 9e18。两个 1e9 相乘、n=1e5 的求和,通常都该用它。
字面量建议加 LL:1e9 在有的上下文是浮点,1000000000LL 才是长整数。
输入输出仍然用 cin/cout,不必改成 printf 的 %lld。
例子
long long a = 1000000000LL;
long long b = 1000000000LL;
long long c = a * b;
cout << c;
输出:
1000000000000000000
1e9×1e9=1e18,int 装不下,long long 可以。如果 a、b 是 int,乘法会先按 int 算并溢出,再塞进 long long,照样错。
常见错误
- 变量是 long long,但乘法两边都是 int。应写成
1LL * a * b。 - 把 long long 当成小数类型。