[comp.unix.xenix.sco] cc really dumps core on this program. why?

cliffb@cjbsys.bdb.com (cliff bedore) (08/30/90)

In article <13116@hydra.gatech.EDU> gt0178a@prism.gatech.EDU (BURNS,JIM) writes:
>in article <1990Aug28.041601.5515@d.cs.okstate.edu>, klarich@d.cs.okstate.edu (KLARICH TERRY JAME) says:
>< #include <stdio.h>
>< #include <values.h>
>< 
>< struct {
><  double min,max;
>< } range = {MINDOUBLE,MAXDOUBLE};
>< 
>< main()
>< {
>< printf("range.min = %E, range.max = %E\n",range.min,range.max);
>< }
>< --------------------------------------------------------------------------------
>< This program causes the cc compiler to dump core.  I am using Xenix 2.3.2
>< with the lng085 update.
>
>Just as a point of interest, this compiles and executes fine on HP-UX 7.0,
>SunOS 4.0.3, and Ultrix 2.2. However, it gets the compile error 'illegal
>initialization' under A/UX 1.1, or the ATT universe on Dynix 2.0v2.
>
>-- 
>BURNS,JIM
>Georgia Institute of Technology, Box 30178, Atlanta Georgia, 30332
>uucp:	  ...!{decvax,hplabs,ncar,purdue,rutgers}!gatech!prism!gt0178a
>Internet: gt0178a@prism.gatech.edu

OK I couldn't take it any more so I started playing.  It appears that the value
for MINDOUBLE is wrong in values.h.  I played around and the program below works
e-321 appears to be as small as you can go



#include <stdio.h>
#include <values.h>

struct {
 double min,max;
} range = {4.940656e-321,1.797693e+308,};
/* } range = {MINDOUBLE,MAXDOUBLE};
*/ 
main()
{
printf("range.min = %E, range.max = %E\n",range.min,range.max);
/* printf("range.min = %E, range.max = %E\n",range.min,range.max);
*/
}