web-dev-qa-db-fra.com

Qu'est-ce que 1LL ou 2LL en C et C ++?

Je regardais certaines des solutions de Google Code Jam et certaines personnes ont utilisé des choses que je n'avais jamais vues auparavant. Par exemple,

2LL*r+1LL

Que signifient 2LL et 1LL?

Leurs inclus ressemblent à ceci:

#include <math.h>
#include <algorithm>
#define _USE_MATH_DEFINES

ou

#include <cmath>
35
fersarr

LL rend le littéral entier de type long long.

Donc 2LL, est un 2 de type long long.

Sans LL, le littéral ne serait que de type int.

Cela compte quand vous faites des trucs comme ça:

1   << 40
1LL << 40

Avec juste le littéral 1, (en supposant que int est de 32 bits, vous passez au-delà de la taille du type entier -> comportement indéfini). Avec 1LL, vous définissez le type sur long long avant la main et maintenant il retournera correctement 2 ^ 40.

65
Kyurem