c語言中FLT DIG和DBL DIG是什麼意思

2021-09-01 11:19:20 字數 2440 閱讀 9578

算裡存放浮點型資料,並不能精確表示。

這兩個巨集在float.h標頭檔案下面,用來說明double、float兩種資料型別有效數字的位數,注意不是小數點後面的有效位數,而是所有位數。

#define dbl_dig         15                      /* # of decimal digits of precision */

#define flt_dig         6                       /* # of decimal digits of precision */

float能保證的有效位數最多是6~7位,完全能保證的是6位,double是15~16位,完全能保證的是15位。

float.h

#ifndef flt_dig

#define flt_dig         6

#endif

#ifndef dbl_dig

#define dbl_dig         15

#endif

#ifndef dbl_max

#define dbl_max     1.7976931348623158e+308  /* max decimal value of a double */

#endif

#ifndef dbl_min

#define dbl_min     2.2250738585072014e-308

#endif

#ifdef __longdouble128

/* power 128 bit long double */

#define ldbl_mant_dig      106

#define ldbl_epsilon       0.24651903288156618919116517665087070e-31l

#define ldbl_dig           31

#define ldbl_min_exp       dbl_min_exp

#define ldbl_min           ((long double) dbl_min)

#define ldbl_min_10_exp    dbl_min_10_exp

#define ldbl_max_exp       dbl_max_exp

#define ldbl_max           0.1797693134862315807937289714053023e+309l

#define ldbl_max_10_exp    dbl_max_10_exp

#elif defined(__longdouble80)

/* ia64 80 bit long double */

#define ldbl_mant_dig      64

#define ldbl_epsilon       1.0842021724855044340075e-19l

#define ldbl_dig           18

#define ldbl_min_exp       (-16381)

#define ldbl_min           3.36210314311209350626e-4932l

#define ldbl_min_10_exp    (-4931)

#define ldbl_max_exp       16384

#define ldbl_max           1.18973149535723176502e+4932l

#define ldbl_max_10_exp    4932

#else

/* default 64 bit long double */

#define ldbl_mant_dig      dbl_mant_dig

#define ldbl_epsilon       dbl_epsilon

#define ldbl_dig           dbl_dig

#define ldbl_epsilon       dbl_epsilon

#define ldbl_dig           dbl_dig

#define ldbl_min_exp       dbl_min_exp

#define ldbl_min           dbl_min

#define ldbl_min_10_exp    dbl_min_10_exp

#define ldbl_max_exp       dbl_max_exp

#define ldbl_max           dbl_max

#define ldbl_max_10_exp    dbl_max_10_exp

#endif /* __longdouble128 */

#ifdef _isoc99_source

#define decimal_dig        37

#endif

C語言中a和 a

一.a 這裡我們先看看陣列名代表的是什麼,這個概念可能大家有所誤解,認為陣列名代表的就是陣列的位址,當然,陣列名代表的是乙個位址,但是關鍵是,通過這個位址,我們關注的是它能取得多大空間的資料的值。例如對於乙個char 型別的位址,我們能夠取得乙個位元組的值,對於乙個int型的位址,我們能夠取得4個位...

c 語言中的 和

我們使用 把巨集引數變為乙個字串,用 把兩個巨集引數貼合在一起.當巨集引數是另乙個巨集的時候,需要注意的是凡巨集定義裡有用 或 的地方巨集引數是不會再展開。下面舉兩個例項 define print f,v printf the v is f v 加上 不會替換引數,只替換其所對應的字元 int ma...

C語言中的「 」和「

先說左移,左移就是把乙個數的所有位都向左移動若干位,在c中用 運算子.例如 int i 1 i i 2 把i裡的值左移2位 也就是說,1的2進製是000.0001 這裡1前面0的個數和int的位數有關,32位機器,gcc裡有31個0 左移2位之後變成 000.0100,也就是10進製的4,所以說左移...