2011-06-08 494 views
11

我正在關注如何使用SDL製作遊戲的教程。在教程中的某個時刻,我需要計算遊戲的FPS。本教程將執行以下操作:1000.f中的.f是什麼意思? C++

caption << "Average Frames Per Second: " << frame/(fps.get_ticks()/1000.f); 

現在,我知道代碼究竟是幹什麼的,除了它除以1000.f.部分我一直在尋找,但只是找不到.f的意思。

所以我的問題是,.f是什麼意思?那爲什麼呢?

回答

19

1000int字面值。

1000.是一個double文字。

1000.f是一個float文字。

+0

爲什麼它是一個雙和浮動在同一時間?他們爲什麼要那樣做? – 0x499602D2 2012-11-04 13:09:56

5

它告訴你,字面1000.應被視爲float。有關詳細信息,請查看here

8

這意味着這是一個float常數而不是double常數。至於效果,在大多數C++編譯器上,它將不起作用,因爲float將被轉換爲double來執行除法。

5

這意味着1000.f被視爲浮點數。

4

浮點文字可以有後綴(f,F,l或L)。 「f和F」指定一個float常數,「l和L」指定一個double

6

.f使得編號爲float類型。

剛看到這個有趣的演示:

float a = 3.2; 
if (a == 3.2) 
    cout << "a is equal to 3.2"<<endl; 
else 
    cout << "a is not equal to 3.2"<<endl; 

float b = 3.2f; 
if (b == 3.2f) 
    cout << "b is equal to 3.2f"<<endl; 
else 
    cout << "b is not equal to 3.2f"<<endl; 

輸出:

一個不等於3.2
b等於3.2F

在這裏ideone做實驗:http://www.ideone.com/WS1az

嘗試將變量a的類型從float更改爲double,再次查看結果!

+0

「b」分配中的「f」不是多餘的嗎? – naught101 2013-08-01 07:25:17

+0

@ naught101:是的。它實際上是多餘的。如果你不使用它,那麼''double''''無論如何都會轉換爲'float'。順便說一句,那不是*任務*;那就是*初始化*。 – Nawaz 2013-08-01 08:25:52

+0

啊,謝謝。我不知道C++。據推測,編譯器會足夠聰明以避免轉換,並且最終會得到相同的編譯代碼,對吧? – naught101 2013-08-01 09:03:11