2014-02-13 2 views
0
#include <iostream.h> 
int main() { 
    int choice; 
    cin>>choice; 
    if (1<=choice<=3) cout<<"good"; 
    else cout<<"bad"; 
    return 0; 
} 

Как оценивается выражение bool? это выражение равноbool operation in expression

if ((1<=choice)||(choice<=3)) 
+0

Ассоциативность <= является LR (слева направо). Так ((1 <= выбор)) <= 3) это может быть выражение. – vinod

ответ

3
if (1<=choice<=3) cout<<"good"; 

походит письма:

if ((1<=choice)<=3) cout<<"good"; 

который всегда удовлетворен, потому что 1<=choice возвращает 0 или 1 (0 является ложным и 1 является истинным), который является всегда<=3.

То, что вы (вероятно) нужно сделать, это:

if(1 <= choice && choice <=3) 
+0

Я думаю, что '(1 <= выбор <= 3)' всегда верно по той причине, что вы объяснили, поэтому ваша эквивалентность мне кажется неправильной. –

+0

На самом деле это то же самое, что и 'if (true)', поскольку '1 <= choice' может оценивать только' true' или 'false', который всегда меньше 3. –

+0

Вы правы, исправлены. Спасибо, парни. – Maroun

0
(1<=choice<=3) 

не эквивалентно:

(1 <= choice || choice <= 3) 

, а скорее:

((1 <= choice) <= 3) 

Который всегда происходит правда, поскольку int (1 < = Выбор) равно 0 или 1

Я предполагаю, что вы хотите:

(1 <= choice && choice <= 3) 
+0

Да, вот и все! –

0

Вам это нужно.

if (1<=choice && choice <=3) cout<<"good";