2015-10-13 68 views
0

從我的代碼什麼是錯的錯誤:無效的操作數爲二進制表達式(「雙」和「雙師型」)

double _double = pow(((15)^17)/11^1.5,2)/9.8; 

一個線路輸出,當我嘗試編譯它,它會返回錯誤:無效操作數爲二進制表達式('double'和'double') 我認爲15^17和11^1.5都是雙倍的,所以爲什麼它給了我這個錯誤?

+6

'^'不是電源,它是邏輯'xor'。問題是'...^1.5'。 – AlexD

+2

你爲什麼認爲這應該起作用? –

+3

爲什麼你在做pow,然後認爲'^'是電力運營商? –

回答

0

編譯器給你一個錯誤,因爲C++中的^沒有做你認爲它的工作。它是XOR運算符,不是電力運營商,它僅適用於整型數據類型。例如,15^1730

01111 // 15 
XOR 10001 // 17 
--------- 
    11110 // 30 

事實上,C++完全缺乏功率操作。您應該使用std::pow(double,double)代替:

double _double = pow(pow(15, 17)/pow(11, 1.5), 2)/9.8; 
+0

我可以這樣做嗎? double _double = pow(pow(15,17)/ pow(11,1.5),2)/9.8; – QifengSun

+0

@QifengSun是的,事實上,這是正確的方式,因爲權力的優先級高於分割。 – dasblinkenlight

0
double _double = pow(((15)^17)/11^1.5,2)/9.8; 

^操作是邏輯異或運營商。

要求數字,請使用pow,就像你一樣。

1

您不能用XOR^)操作兩個雙打。它只適用於int,long,bool,short,char及其變化。沒有浮點數據類型。

相關問題