خب همانطور که از اسمش پیداست "long double" بازه ی بزرگتری از اعداد double نسبت به "double" داره...
منظور از تفاوت، تفاوت در سند استاندارد C++ هست. مثلاً در C++ استاندارد long int حتماً بزرگتر از int نیست و در بعشی از سیستمهای ۳۲ بیتی int و long int هر دو چهاربایتی هستند.
C++
long int
int
اینی که شما میگید بستگی به کامپایلر داره... ولی در حالت general(کلی) "long double" نسبت به "double" هم range عددی بیشتری داره و هم تعداد اعشار بیشتری داره... من درست متوجه سند استاندارد نشدم اگه میشه لطفا واژه ی انگلیسیشو بذارین ممنون میشم
C++ یک سند استاندارد داره که استانداردهای زبان C++ رو مشخص میکنه. آخرین نسخهی این استاندارد C++11 هست. پشتیبانی کامپایلرها از زبان C++ بر مبنای مقدار هماهنگیای که با این سند دارند تعریف میشه. مثلاً کامپایلر g++ بیشتر از ۹۰ درصد هماهنگی با سند C++11 داره. در مورد محدودهی بزرگتر میشه دو تا گزاره گفت
C++11
g++
RANGE(long double) > RANGE(double) RANGE(long double) >= RANGE(double)
در مورد long int و int گزارهی استاندارد C++ (چه در C++03 و چه در C++11) به صورت زیر هست
C++03
SIZE(long int) >= SIZE(int)
یعنی کامپایلری که long int رو به اندازهی int تعریف کنه از نظر استاندارد اشتباهی مرتکب نشده و هنوز منطبق با استاندارد خواهد بود.
برای اطلاع از استانداردهای زبان C++ و نسخههای آیندهی اون (C++14 و C++17) میتونین به این سایت سر بزنین
C++14
C++17
کمیتهی استانداردسازی C++