On 2/22/06, Glynn Clements <glynn@xxxxxxxxxxxxxxxxxx> wrote: > > Steve Graegert wrote: > > > > In terms of performance and raw speed, is there any disadvantage of using > > > "long long int" instead of "long int", "long double" instead of "double" on > > > 32-bit machine ? Are there any other disadvantage that I should consider? > > > > On 32-bit Intel machines a long long int (64 bits) is usually not the > > same as a long int (32 bits), the same is true for double (64 bits, > > IEEE754) and long double (96 bits, IEEE845). > > In C99 (ISO-IEC 9899:1999), long double is supposed to be one of the > two ISO-IEC 60559 extended formats, which are 80 or 128 bits. On x86, > it's usually 80 bits. x86 ABI defines long double 12 Bytes of size (96 bits) on x86. 80 bits for precision, 12 bits is padding, totalling for 96 bits of size. It _can_ be put in a 128 bit container to preserve alignment. The compilers default to 96-bit but gcc has an option to pad out to 128bit (-m128bit-long-double) resulting in a gain of performance with IA64 but slower speed on x86 due to software emulation. > > BTW long long int is a GNU extension and subject to portability. > > long long int is part of the C99 standard. Ok, thanks. \Steve - : send the line "unsubscribe linux-c-programming" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html