2012-03-06 88 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