2017-02-15 51 views
-4

當我們用C語言中的整數乘法時,我們得到了什麼?請解釋。我很困惑,因爲當我遇到問題時,我做攝氏到華氏轉換,還有很多其他轉換。Integer * float =? in C

+7

我們得到整數提升爲一個浮點數,結果也是一個浮點數。任何體面的教程應該涵蓋。 – StoryTeller

+1

讀取數據類型提升規則。 – haccks

+4

如果您有特定的問題,請顯示您的代碼,我們可以告訴您如何做得更好, – crashmstr

回答

7

什麼,我們得到當我們乘浮點整數?

TL; DR我們得到一個浮點結果。

爲了詳細描述,進行算術運算,如果兩個操作數是不同的秩的,根據算術轉換規則,與較低秩操作數被提升到較高秩,然後執行該操作。在你的情況下,整數被提升爲浮動類型和操作的結果,如果是浮動類型。

C11引用的相關部分,章節§6.3.1.8,常見的算術轉換

許多運營商意想不到算術類型轉換的原因和產量結果 類型以類似的方式操作數。目的是確定操作數 和結果的常見實型。對於指定的操作數,每個操作數都將被轉換,而不會將類型爲 的域更改爲相應的實型是普通實型的類型。除非 明確規定,否則,常見的真正的類型也相應的實型 結果,其類型域是操作數的類型域,如果它們是相同的, 和複雜的除外。這種模式被稱爲通常的算術轉換:

,並且對於這個特定的情況下,

  • 否則,如果對應的實數型有一個操作數的是float,其他 操作數轉換,無類型域的變化,以一類型,其 對應的真實類型是float
0

它是浮動的,但您應該注意精度損失,溢出和下溢。推薦閱讀

IEEE標準。 754-1985。 IEEE標準二進制浮點運算

D.戈德堡。每一位計算機科學家應該瞭解的關於浮點運算的關於 [J]。 ACM Computing Surveys(CSUR),1991, 23(1):5-48。

0

在這種情況下,我總是拋出次要類型(整數),並做其餘的操作。結果和操作數將全部爲浮動類型。