Re: What should std::cout << std::numeric_limits<double>::infinity
() print?
On 6/4/2010 4:12 AM, Stuart Redmann wrote:
I'm struggling with the most famous compiler of all time (probably
many of you can guess which I mean ;-), and I think I got another
point where it is (supposedly) not standard-conform. For example
#include<iostream>
#include<limits>
int main ()
{
std::cout<< std::numeric_limits<double>::infinity ();
}
prints "1.#INF". Is this behaviour according to the standard? I
haven't found anything valuable in the net about this, not even on
www.cplusplus.com. I'm starting to think that this may be even
implementation-defined.
I don't think the Standard specifies any particular output if the value
is one of "special" values, like infinity, minus infinity, not-a-number.
In fact, the section 22.2.2.2.2 says that the output should be like
the 'printf's with a particular format specifier ('f', 'e', 'g')
depending on some settings. Consider asking in 'comp.lang.c', they know
a bit more about C standard library, and you probably need to ask about
the obsolete C90 anyway. The 1999 C standard says that an infinity
value should output [-]inf or [-]infinity, defined by the
implementation. I am guessing some implementation don't follow the
recommendations of the Standard, or the specification in C90 used to be
different (I don't have the document to check).
V
--
I do not respond to top-posted replies, please don't ask