2017-10-20 53 views
2

我是新來的C/C++編程,我不知道他們爲什麼把字母「F」在一些結束時分配,像這樣的字母F(浮點型):關於在C/C++

#include <stdio.h> 
int main() 
{ 
    float my_float = 2.34f; 
    double my_double = 2.34; 
} 

我搜索了一段時間,我認爲如果我不把這個字母'f',變量my_float將是一個雙。我對嗎? 我找到了一些方法來查找內存如何使用變量/或它的類型(在這種情況下,這是my_float),但我不明白,有人可以幫助我嗎?

+4

2.34 =雙 2.34f =浮子 它們具有不同的尺寸在存儲器(因此精度) – UKMonkey

+1

它們被稱爲「文字」 - 在這裏是爲C++參考:http://en.cppreference.com/w/ cpp/language/expressions#Literals – UnholySheep

+0

好吧,我明白了,謝謝你的回答。 –

回答

7

在這種情況下,他們並不需要。

2.34f文字的類型float(即相反的方式比你認爲由你的問題來判斷)。比較2.34這是double類型的文字。

更詳細,如果你寫了float my_float = 2.34;那麼編譯器會隱式執行轉換爲您服務。

有時候,你需要明確指定文字。在C++中,例如,考慮

void foo(const double&){ 
    // reformat hard disk 
} 

void foo(const float&){ 
    // pay me a bonus 
} 

int main() 
{ 
    foo(2.34f); 
} 

在這裏,我們迫使foo適當的過載被調用。

0

簡短的回答是:一個數值文字帶有小數點fF後綴會告訴你的數字文字應被視爲一個float數編譯器,而不是一個double;如果後綴是lL,它將被視爲long double。在漂浮大多數系統在內存中的字節大小的一半,因此,精度要少得多,比數。

這個後綴來自於良好的老C(雖然我不知道,如果它是在早期的語言使用前做)。我建議你看看關於C的最好的書,The C Programming Language,作者:Kernighan和Ritchie。特別是,這本書:

Image from 'The C Programming Language, 2nd. Ed., Kernighan & Ritchie

+0

謝謝,我會讀它。 –

+0

並在每章結尾處進行示例練習。 – Bathsheba

0

添加在數字文字遺囑的結尾之「F」把它看作是一個浮點值。編譯器可以理解'f'表示浮點常量。