我有下面的代碼段(隨意改變浮體與雙):關於比較的整數和浮點值/雙重在C/C++
class A
{
public:
void setValueFloat(float v) {
m_floatValue = v/3.6; // m/s <-> km/h conversion
}
void setValueInt(int v1, int v2) {
m_intValue1 = v1; m_intValue2 = v2;
}
bool conditionIsOk()
{
if(m_intValue1 > m_intValue2)
{
if(m_intValue1 - m_intValue2 > m_floatValue)
{
return true;
}
}
return false;
}
private:
int m_intValue1, m_intValue2;
float m_floatValue;
};
和別處:
A a;
int something = 5; // Intentionally int
int somethingElse = 6; //these are just some numbers, not production data!!!
int moreStuff = 7;
a.setValueFloat(something);
a.setValueInt(somethingElse, moreStuff);
if(a.conditionIsOk())
{
// Yippee!
}
而且問題:
如何安全是它的算術運算的結果比較上
int
小號根據上述情況給float
?這種情況是否需要
(float)m_intValue1 - (float)m_intValue2 > m_floatValue
?在C/C++標準中,我可以找到關於這種情況的一行嗎?
對於簡單情況,默認情況下會完成哪些類型轉換
m_intValue1 - m_intValue2 > m_floatValue
? (我怎樣才能讓這的方式,他也看到它(視覺)別人「只是認爲它的工作原理」是不夠的:))
這是最決然不會C. – ciphermagi
@ciphermagi只是刪除了'class'執行,然後它會。我對背後的理論更感興趣。 – fritzone
忽略類和布爾運算符,可以像上面那樣設置類似於C的東西,然而你基本上是問如果(2> 2.5)' – ciphermagi