if语句不适用于|| (要么)

时间:2013-11-20 00:59:06

标签: c++ if-statement

我是c ++的新手 我试图写一个程序,我发现它有问题 即使我使用了一个更简单的程序(吼叫),我也无法弄清楚

当我输入85或55之类的数字时,即使程序不响应,也可以

#include "stdafx.h"
#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int a=0;
    cin >> a;
    if(a<25 || 30<a<50 || 60<a<75)
    {
        cout << "see it does't work\n";
    }
    return 0;
}

请帮帮我

6 个答案:

答案 0 :(得分:4)

#include "stdafx.h"
#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int a=0;
    cin >> a;
    if(a<25 || (30<a && a<50) || (60<a && a<75))
    {
        cout << "see it does't work\n";
    }
    return 0;
}

答案 1 :(得分:1)

你的情况应该是这样的:

if(a<25 || (30<a && a<50) || (60<a && a<75))
{
    cout << "see it does't work\n";
}

答案 2 :(得分:1)

你的if语句格式不正确。

每个表达式必须求值为true或false,并且不能执行上/下边界等操作。

试试这个:

int main()
{
    int a=0;
    cin >> a;
    if(a<25 || (a > 30 && a < 50)  || (a> 60 && a <75))
    {
        cout << "see it does't work\n";
    }
    return 0;
}

答案 3 :(得分:1)

尝试

#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int a=0;
    cin >> a;
    if ((a<25) || ((30<a) && (a<50)) || ((60<a) && (a<75)))
    {
        cout << "see it does't work\n";
    }
    return 0;
}

括号是你的朋友。 每个二进制条件表达式将具有左部分(a),运算符(&lt;)和右部分(25)。你必须打破一切,以这种方式表达。

答案 4 :(得分:1)

以下if语句中发生的事情是:

if(a<25 || 30<a<50 || 60<a<75)

当a = 85时,30总是小于a,因此为真(在转换为整数时c ++表示1),然后1总是小于50,因此为真。

因此,请考虑将if语句更改为

if ( a < 25 || (30 < a && a < 50) || ( 60 < a && a < 75) )

答案 5 :(得分:0)

C ++中没有x < z < y种语句。您应该将这些语句分成二进制部分:x < z && z < y

让我为你改写:

#include <iostream>

int main() {
    int a = 0;
    std::cin >> a;
    if(a < 25 || (30 < a && a < 50) || (60 < a && a < 75)) {
        std::cout << "See? It does work!\n";
    }
    return 0;
}
相关问题