算裡存放浮點型資料,並不能精確表示。
這兩個巨集在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,所以說左移...