2016-03-28 43 views
0

我運行下面的代碼浮法變量計算:使用INT錯誤

// Example program 
#include <iostream> 
#include <string> 
using namespace std; 
int main() 
{ 
    int x=4,y=2,z=11; 
    float p; 
    p=7+z/y-x*2; 
    cout<<p; 
    return 0; 
} 

的X,Y,Z被聲明爲整數。爲什麼p在p被聲明爲float時得到一個int?

謝謝。

+1

請在這裏輸入完整的代碼。 – STF

+0

在此處放置更多詳細信息 –

+0

因爲兄弟您聲明您的輸入值爲整數 – iOS

回答

1

如果a和b是整數,則a/b的結果將始終爲整數,而不是浮點數。除法結果被截斷爲整數值,浮點數部分被丟棄。

在表達式7+z/y-x*2中只使用整數變量,這就是爲什麼結果也是整數。

正如你可以投在右側的操作數浮動的一個選項,然後整個表達式將threated爲float:

7+z/(float)y-x*2 
+0

但是p被聲明爲float。它應該存儲爲浮動權利? –

+0

首先,計算賦值運算符右側的表達式。它具有int類型。然後在分配過程中,它會被浮動,但在計算過程中原始的浮點數部分會丟失。 – CodeFuller

+0

但我仍然看不到邏輯流程。它應該以浮動的方式計算嗎? –

0

請改變你的整數數據類型,浮動所以你長了

#include <iostream> 
#include <string> 
using namespace std; 
int main() 
{ 
    float x=4,y=2,z=11; 
    float p; 
    p=7+z/y-x*2; 
    cout<<p; 
    return 0; 
} 
+0

應用此代碼 – iOS

+0

我知道。但我只想知道計算的概念。 –