我有以下code.that演示我遇到的問題。比較怎麼沒有評估真實?這是整數和浮點比較的限制嗎?整數與浮點C++比較
#include <iostream>
int main(){
double m = -0.625;
if((-1)<=m<=0){
std::cout << "Enter here" <<std::endl;
}
return 0;
}
我有以下code.that演示我遇到的問題。比較怎麼沒有評估真實?這是整數和浮點比較的限制嗎?整數與浮點C++比較
#include <iostream>
int main(){
double m = -0.625;
if((-1)<=m<=0){
std::cout << "Enter here" <<std::endl;
}
return 0;
}
你不能做到像在C.它更改爲以下,它會工作三個比較:if語句
if((-1) <= m && m <= 0){
std::cout << "Enter here" <<std::endl;
}
條件在此
if((-1) <= m <= 0){
相當於
if((-1 <= m) < = 0){
as -1
小於m
,則子表達式(-1 <= m)
產量1 C和true
在C++那然後被轉換成1和子表達式1 <= 0
產量0
C和false
在C++ ..
要獲得期望的結果則應該寫
if(-1 <= m && m <= 0){
在C++中-1 <= m <= 0
相當於(-1 <= m) <= 0
。
在此示例中,-1
隱式轉換爲float
,以便使用<=
運算符和m
。這個表達式的結果是bool
。然後將該結果隱式轉換爲int
,以便使用<=
運算符與0
。由於bool轉換爲0
或1
(false
或true
),因此該條件語句只有在m
小於-1
時才爲真。
從數學的角度來看,像這樣構造if語句是有道理的,但是你必須明確地分解它,以便編譯器知道你想要什麼。
試試這個
-1 <= m && m <= 0
你不能鏈比較運營商一樣,在C++中,或在大多數語言。 Python是我知道的唯一允許使用的語言。 – user2357112
ahhh我明白了....這可以解釋爲什麼 – Belphegor
你不需要'-1'附近的括號。 –