我檢查是否值IR 0之間和-0.2像這樣:爲什麼這個數字被檢測爲bool?
float value = -0.1;
if (0 <value> -0.2f) { }
,但我得到的錯誤operator '>' cannot be applied to operands of type 'bool' and 'float'
。我知道,我可以通過其他方式使用&&
運算符來判斷,但是我想知道,爲什麼會被檢測爲bool?
我檢查是否值IR 0之間和-0.2像這樣:爲什麼這個數字被檢測爲bool?
float value = -0.1;
if (0 <value> -0.2f) { }
,但我得到的錯誤operator '>' cannot be applied to operands of type 'bool' and 'float'
。我知道,我可以通過其他方式使用&&
運算符來判斷,但是我想知道,爲什麼會被檢測爲bool?
看看這個:
0 <value> -0.2f
首先0 < value
評估,它返回bool
值,那麼它會嘗試把它比bool
浮數-0.2f
,所以它會返回錯誤,因爲這是不允許的。
你要檢查是否值小,如果值是大於,所以這是你想做的事:
if (0 < value && value > -0.2f) { }
這是因爲你的if語句的構造。試試這個:
if (0 < value && value > -0.2f) { }
你寫的是相同的:
if ((0 < value) > -0.2f) { }
的0 < value
比較被評估,返回一個布爾值,然後成爲第二個比較操作數。並且,如錯誤消息所示,您不能使用>
來比較布爾值和浮點數。
float value = -0.1;
if (0 <value> -0.2f) { }
因爲你需要單獨的比較
最語言從左到右工作
0 < value
將首先被評估。這是一個布爾
現在你表達的結果全文
boolean > -0.2f
這顯然是行不通的。您需要
if (0 < value && value > -0.2f)
& &是一個「邏輯和」其邏輯計算的結果相結合,左右它
由於順序操作的。
基本上,編譯器編譯,如果以這樣的事:
if ((0 < value) > -0.2f)
和被比較一個bool
和int
,這是不好的結果。
試試這個:
if (0 < value && value > 0.2f)
你的if語句語法不正確。它需要大括號之間的布爾表達式。
http://msdn.microsoft.com/en-us/library/vstudio/5011f09h.aspx
if (0 <value> -0.2f) { }
你的語句解析如下:
if ((0 < value) > -0.2f) { }
(0 < value)
計算結果爲布爾表達式。你正試圖將它與浮點數進行比較。因此錯誤。
正如你自己建議的那樣,正常的做法是使用&&
。
沒有人似乎已經注意到,如果'0 <值',那麼'值> 0'(除非值是NaN),因此'值> -0.2f',所以OP有一個不必要的測試或意味着要測試範圍'((0.0f>值)&&(值> -0.2f))' – 2013-05-13 15:32:10
lol好點皮特......也許應該是0>值,正如你所說 – 2013-05-13 15:33:37