Was ist der Unterschied zwischen "long", "long long", "long int" und "long long int" in C ++?

Ich wechsele von Java zu C ++ und habe einige Fragen zumlong Datentyp. In Java, um eine ganze Zahl größer als 2 zu halten32, du würdest einfach schreibenlong x;. In C ++ scheint dies jedoch der Fall zu seinlong ist sowohl ein Datentyp als auch ein Modifikator.

Es scheint verschiedene Möglichkeiten zu gebenlong:

long x;
long long x;
long int x;
long long int x;

Es scheint auch Dinge zu geben wie:

long double x;

und so weiter.

Was ist der Unterschied zwischen all diesen verschiedenen Datentypen und haben sie alle den gleichen Zweck?