当前位置:首页C++ > 正文

【信息学竞赛必知】为什么 C++ 里有时候要写 LL?

作者:野牛程序员:2025-09-27 18:31:48C++阅读 2350
为什么 C++ 里有时候要写 LL?

为什么 C++ 里有时候要写 LL

写 C++ 的时候,常常能看到别人代码里在数字后面加个 LL,比如 1000000000000LL
初学时可能会纳闷:直接写 1000000000000 不行吗?
答案是 —— 不一定行


故事从一个“溢出”说起

想象一下,有个需求:计算一个长方形的面积。宽和高都在十万级别:

#include <bits/stdc++.h>
using namespace std;

int main() {
	int w = 100000, h = 100000;
	long long area = w * h;

	cout << "ans1 = " << area << endl;

}

结果一打印,

ans1 = 1410065408

发现面积完全不对!
问题出在哪?

  • wh 的类型是 int

  • 在 C++ 里,两个 int 相乘,结果还是 int,中间步骤就炸了。

  • 等结果溢出完,才丢给 long long,已经晚了。

于是就有人写成这样:

long long area = 1LL * w * h;

这里的 1LL 把整个表达式的运算提升到 long long,保证计算不出问题。


那么,LL 究竟干了什么?

在 C++ 里,数字常量(比如 123456)默认是 int 类型。
如果加了 LL,就变成 long long 类型。

所以:

  • 1000int

  • 1000Llong

  • 1000LLlong long

看起来只是个小尾巴,其实直接决定了运算过程的精度。


常见用法

  1. 防止中间运算溢出

    long long sum = 1LL * n * (n + 1) / 2;

    如果 n10^9 级别,少了 LL,分分钟溢出。

  2. 写大常量

    const long long LIMIT = 1000000000000LL;

    这样一看就知道是 long long 常量,避免类型歧义。

  3. 算法题必备套路
    凡是涉及平方、乘法、组合数的地方,写个 1LL 基本能保命。


总结一句话

LL 就像给数字戴了个“安全头盔”。
在需要大数运算的场景里,它能防止意外溢出,让结果更可靠。
所以,遇到 10^910^12 这种量级,写个 LL,既是习惯,也是保险。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • 为什么 C++ 里有时候要写 LL?
  • 相关推荐

    最新推荐

    热门点击