什么是C和C++中的1LL或2LL?

fer*_*arr 38 c c++ math cmath long-integer

我正在研究Google Code Jam中的一些解决方案,有些人使用过我以前从未见过的东西.例如,

2LL*r+1LL
Run Code Online (Sandbox Code Playgroud)

2LL和1LL是什么意思?

他们的包括如下所示:

#include <math.h>
#include <algorithm>
#define _USE_MATH_DEFINES
Run Code Online (Sandbox Code Playgroud)

要么

#include <cmath>
Run Code Online (Sandbox Code Playgroud)

Kyu*_*rem 71

LL使整数文字类型的long long.

所以2LL,是2的类型long long.

没有LL,文字只会是类型int.

当你做这样的事情时,这很重要:

1   << 40
1LL << 40
Run Code Online (Sandbox Code Playgroud)

只有文字1,(假设int是32位,你超越了整数类型的大小 - >未定义的行为).使用1LL,您可以将类型设置为预先设置long long,现在它将正确返回2 ^ 40.

  • @doomster:嗯,这对人类的可读性很重要:`11LL`比`11ll`更容易阅读. (6认同)
  • @doomster,你是对的.`long long`是C++ 11中的官方类型,至少有64位. (2认同)