浮點常量可被寫為十進位制或十六進製制,在下面兩個小節描述。
3.2.1
十進位制浮點常量
乙個普通的浮點常量由乙個十進位制數字包含乙個小數點的序列組成。在科學計數法中,你也可以給它的值乘以10
的冪。10
的冪可以使用指數表示,引入字母e
或e,乙個包含指數的浮點常量不需要包含小數點,table 3-2
給出了一些十進位制浮點常量的例子。
table 3-2. examples of decimal floating-point constants
浮點常量 值
10.0 10
2.34e5
2.34 x 105
67e-12
67.0 x 10-12
小數點可能是第乙個或最後乙個字元,因此,10.
和.234e5
都允許使用的數,然而,不帶小數點的數字10
將是乙個整型常量,而非浮點型常量。
浮點常量的預設型別為double,
你也可以通過增加字首f
或f指定乙個常量為float
,或者使用字首l
或l使常量的型別為long long,
如下例子所示:
float f_var = 123.456f; //
初始化
long double ld_var = f_var * 987e7l;
3.2.2
十六進製制浮點常量(c99)
c99標準引入了十六進製制浮點常量,與十進位制浮點數相比它具有乙個關鍵的優勢,如果你使用十六進製制來指定乙個常量的值,在計算機中它將精確地以二進位制浮點格式儲存,沒有誤差。
十六進製制浮點常量包含字首0x
或0x,
及乙個十六進製制數字序列並帶有乙個可選的小數點(在此場景下,我們應該稱它為十六進製制小數點),和乙個2
的指數,其中指數是乙個十進位制數,使用字母p
或p表示。例如,常量0xa.fp-10
與十進位制數(10 + 15/16) x 2-10 (not 2-16)
相等,還有如下一些等價的表示方法,0xa.fp-10, 0x5.78p-9, 0xafp-14
和0x.02b3p0。
在十六進製制浮點常量中,必須包含乙個指數,即使它的值為0
,這一步是為了區分字首f
(在指數後)和十六進製制數字f
(在指數左邊),例如,如果指數沒有被要求,常量0x1.0f
可能被解釋為float
型的1.0
,也可能被解釋為double
型別的1+15/256。
與十進位制浮點數類似,十六進製制浮點數也具有預設的型別double,
增加乙個字首f
或f使用乙個常量的型別變為float,
或者使用字首l
或l使常量型別變為long double
。
C核心技術手冊(二十)
在c 中,常量是表示乙個固定值的記號,它可能是整型 浮點型 字元 或乙個串。乙個常量的型別由它的值和記法來決定。這裡討論的常與混合常量不同,混合常量在c99 標準中介紹,它通常是可修改的物件,類似於變數,了解混合常量的詳細介紹和特殊操作可參見第五章。乙個整型常量可以以普通的十進位制數表示,或者是八進...
C核心技術手冊(三十一)
4.2.3 隱式指標轉換 編譯器隱式地轉換確定的指標型別,分配 條件表示式使用操作符 和 函式呼叫使用三種隱式的指標轉換,如下節所描述,三種隱式指標轉換 l乙個指標物件型別可以隱式地轉換為 void 指標,反之亦然 l乙個給定型別的指標可以隱式地轉換為乙個該型別更合格的版本 l乙個 null 指標常...
C核心技術手冊(三十一)
4.2.3 隱式指標轉換 編譯器隱式地轉換確定的指標型別,分配 條件表示式使用操作符 和 函式呼叫使用三種隱式的指標轉換,如下節所描述,三種隱式指標轉換 l 乙個指標物件型別可以隱式地轉換為void 指標,反之亦然 l 乙個給定型別的指標可以隱式地轉換為乙個該型別更合格的版本 l 乙個null 指標...