2013-04-27 5 views
24

Ich habe mir einige der Lösungen in Google Code Jam angesehen und einige Leute haben diese Dinge benutzt, die ich noch nie zuvor gesehen hatte. Zum BeispielWas ist 1LL oder 2LL in C und C++?

2LL*r+1LL 

Was bedeutet 2LL und 1LL- bedeuten?

umfasst Ihr wie folgt aussehen:

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

oder

#include <cmath> 

Antwort

50

Die LL macht die Ganzzahlliteral vom Typ long long.

Also 2LL, ist eine 2 vom Typ long long.

Ohne die LL würde die wörtliche nur von int Typ sein.

Dies ist wichtig, wenn man Sachen wie dies tut:

1 << 40 
1LL << 40 

Mit nur wörtlichen 1 (int unter der Annahme, 32-Bit zu sein, verschieben Sie über die Größe des Integer-Typs -> undefiniertes Verhalten). Mit 1LL stellen Sie den Typ vorher auf long long ein und jetzt wird 2^40 korrekt zurückgegeben.

+0

Das ist eine * großartige * Erklärung. –

+0

In der Tat ist es. Ist 'long long' in C++ vorhanden? – Sebivor

+1

'long long' wurde dem neuesten C++ - Standard hinzugefügt, glaube ich. Das heißt, es ist egal, ob Sie Großbuchstaben 'L' oder Kleinbuchstaben' l' verwenden. Außerdem gibt es "U" oder "U" für "unsigned", um mit ihnen zu kombinieren. –