2015-09-26 106 views
-1

前兩個語句與給定的數字輸入一起運行,但第三個語句不運行。爲什麼我的if else語句工作

#include <iostream> 
using namespace std; 

int main() 
{ 

    double X; 

    cout << "Please pick a number from -10 to 10"; 

    cin >> X; 

    if ((-3 <= X)&&(X <= 2)) 
     cout << "Y = " << (X * X) + (2 * X) -3 << endl; 

    else if ((2 < X)&&(X <= 10)) 
     cout << "Y = " << (5 * X) + 7 << endl; 

    else if ((X > 10)&&(X < -3)) 
     cout << "Y = " << 0 << endl; 

    return 0; 
} 

當我選擇-1011我接收結果僅是一個端程序不是一個「Y = 0」。

+4

因爲X不能同時大於10且小於-3 – x1Mike7x

+2

@StevenHansen:不,'-10'不符合第一個。它變成了'((-3 <= -10)&&(-10 <= 20))',其評估爲錯誤的'(假&&真)'。 –

+0

這不是你的bug的原因,但[你應該檢查'cin >> X'是否成功](http://kayari.org/cxx/yunocheckio.html) –

回答

6
if ((X > 10)&&(X < -3)) 

在一個時間X不能X> 10 X < -3所以它會總是返回false。

所以它永遠不能進入(3rd)if條件。

你可能想使用的||代替&&所以,如果有人是事實,就可以去裏面if條件:

if ((X > 10)||(X < -3)) 
+0

我不明白你在暗示什麼 – JerryGoyal

+2

@StevenHansen:這是你的誤解,或者更可能是粗心閱讀代碼,你有不同的看法。 –

+0

@StevenHansen OP特別提到關於選擇-10或11而不是命中第三條件。 – JerryGoyal

3

你想要一個logical OR操作上的最後一個if語句。

else if (X > 10 || X < -3) { 
    cout << "Y = " << 0 << endl; 
} 
0

答案是一個數字在一次中不能大於10,小於-3。例如,20大於10,但也大於-3。你找不到這個號碼。

+0

這並沒有給已經給出的答案增加任何東西。 – Blackwood