Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
315 views
in Technique[技术] by (71.8m points)

c++ - Why are double and long double completely the same on my 64 bit machine?

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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

In MSVC++, long double is a synonym for double 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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...