2014-06-18 50 views
5

Şu an dilleri programlama (BNF'ler, tarayıcılar vb.) Hakkında bilgi alıyorum ve C'deki onaltılık kayan nokta sabitlerinin bir üssü gerektirmesi garip görünüyor. C99 standardında itibaren Onaltılı kayan nokta neden belirli bir üste sahip olmalıdır?

,

§6.4.4.2 Yüzer sabitleri

hexadecimal-floating-constant: 
    hexadecimal-prefix hexadecimal-fractional-constant 
     binary-exponent-part floating-suffix[opt] 
    hexadecimal-prefix hexadecimal-digit-sequence 
     binary-exponent-part floating-suffix[opt] 

isteğe bağlı bir üs ile onaltılık kayan nokta sabitlerini ayrıştırmak olacak bir tarayıcı yazmak kolay görünüyor. Neden C standardı, üssü ondalık kayan noktalara göre isteğe bağlı yapar ve onaltılık yüzer nokta için gereklidir?

cevap

7

Bu C99 Rationale kaplıdır, bölüm 6.4.4.2:

C99 yeni özellik: o daha net yüzen sabitleri önemini ifade çünkü C99 onaltılık gösterimini ekler. ikili bileşen bileşeni, f soneki onaltılık basamak olarak algılanan belirsizlikten kaçınmak için ondalık gösterim için olduğu gibi isteğe bağlı değil, gereklidir. Örneğin

, 1.0f tip float sabit bir ondalık kayan nokta olmakla 0x1.0f belirsiz olurdu ve 0x1.0p0f olarak yazılmalıdır.

Aynı nedenden dolayı, e yerine, p yerine üslen e geçerli bir onaltılık basamaktır.

İlgili konular