2014-11-06 72 views
-3

如果我有這些常數1 + 2.3,那(float)1 + 2.3和這個1f + 2.3有什麼區別?C中的投射運算符和後綴有什麼區別?

+2

'1(float)+ 2.3'是一個語法錯誤。你能向我們展示你感到困惑的兩個有效表達嗎? – 2014-11-06 23:59:07

+0

我敢肯定,第二個不會編譯... – ApproachingDarknessFish 2014-11-06 23:59:11

+0

那麼我的書,普拉塔的C Primer Plus說:「...它可以讓你要求精確的類型轉換,你想要的或文件你知道你正在做一個類型轉換,做這個的方法叫做一個cast,它包括在括號中的數量和所需類型的名稱之前,圓括號和類型名稱一起構成一個演員操作符 mice = (int)1.6 +(int)1.7; ...「」...爲了使一個小的 常量被視爲long類型,可以附加一個l(小寫的L)或L作爲後綴....「 – user3646717 2014-11-07 00:38:18

回答

2

那麼,讓我們來看看一些情況:

  1. 1 + 2.3,這是一個整數加一個雙。
  2. 1f + 2.3,這是一個浮動加雙。
  3. 1. + 2.3,這是一個雙加雙。

在所有這三種情況下,第一個參數或者已經是,或者將被提升爲double。此外,這些表達式的結果將永遠是雙倍的。

+1

在最後一個沒有促銷... ;-) – Deduplicator 2014-11-07 00:04:40

+0

那麼我會說的另外一件事是'(float)1'是一個浮點數,然後它被提升爲數學的一倍。 – 2014-11-07 02:01:38

1

當您編寫1.f時,您將在內存中創建一個浮點數。 當您編寫(float)1時,您會在內存中創建一個整數,但該數字將在表達式(鑄造)中被解釋爲一個浮點數。

相關問題