double a,b,c; memset(&a,0x3f,sizeof(a));//double都初始化为0x3f,其实际为一个非常小的数 memset(&b,0x7f,sizeof(b)); c=0x3f3f3f3f3f3f3f3f;
printf(“%lf\n%lf\n%lf”,a,b,c);
输出: 0.000477 1382417208487871530309079876829361519920890827655236399202446373087004409281425975828759961223649754730531017408099857515546836392400417046590332715399634071080623695707883976652716068383393396038903725080647755086048184917192852687494574532544186355366261864363207133093848253625865070671519163486482464768.000000 4557430888798830592.000000
说明: 浮点数不要用整数思维理解 float和double的范围是由指数的位数来决定的。float的指数位有8位,而double的指数位有11位,分布如下: float:1bit(符号位)+8bits(指数位+23bits(尾数位) double:1bit(符号位)+ 11bits(指数位)+ 52bits(尾数位)
|