2012-03-06 87 views
1

語句我試圖形成一個if語句,像這樣:如果多條件

int myVariable = -1; 
if (0 <= myVariable <= 99) 
{ 
    // Do something 
} 

但是,如果我分配-1myVariable,這是一個int,if語句仍評估,以真正

我在做什麼錯?

回答

7

這不是用C++語法說出你想要的東西的正確方法。你想:

int myVariable = -1; 
if (0 <= myVariable && myVariable <= 99) 
{ 
    // Do something 
} 

你寫的是什麼如下: 1)評估0 <= myVariable,這在你的例子是假的(在C轉換爲0 ++在這方面) 2)然後,這個結果(0)是與< = 99比較,所以C++讀取「0 < = 99」,這是真的,所以if語句是真的。

+1

技術上false在C中用0表示。在C++'false'中是它自己的值,可以隱式轉換爲int,當int值爲0時我認爲大多數C++編譯器應該有一個警告您可以啓用將bool的隱式轉換標記爲int。 – bames53 2012-03-06 21:29:59

+0

從技術上講,它*是* C++語法(否則它不會編譯)。這不僅是大多數人寫作時的邏輯。 :P – aldo 2012-03-06 21:41:08

+0

更新爲反映此... – Oleksi 2012-03-06 21:43:26