This question may sound like for beginners, however when I found that out I thought I'm either a beginner or my comp is missing something:
int main()
{
cout << sizeof(double) << endl;
cout << sizeof(long double) << endl;
cout << DBL_DIG << endl;
cout << LDBL_DIG << endl;
return 0;
}
PROGRAM OUTPUT:
8
8
15
15
I thought long double
is 10 bytes and has 18 decimal digits while double
is 8 bytes and has 15 digits but it seems I was wrong.
Why is that so?
Using MSVC 2010 on 64bit machine.
In MSVC++,
long double
is a synonym fordouble
as you've found out. Apparently this is to take advantage of SSE/SSE2/SSE3 instruction sets which are limited to 64-bit operations.See also here for more information.