c ++如果检查不能正常工作

时间:2018-06-16 12:24:23

标签: c++ if-statement

我想要制作一个日程计数器来计算两个日期之间的日期,但检查并不像我想的那样工作。问题是它传递了我给它的任何值,例如它认为一个月内有41天。谢谢你的帮助!

cout << "Please give the two dates!\n";
    cin >> year1 >> m1 >> d1 >> year2 >> m2 >> d2;

    if (1 <= year1 <= 9999 &&
        1 <= year2 <= 9999 &&
        1 <= m1 <= 12 &&
        1 <= m2 <= 12 &&
        1 <= d1 <= 31 &&
        1 <= d2 <= 31 )
    {
        cout << "ok";
    }
    else
    {
        cout << "notOK";
    }

2 个答案:

答案 0 :(得分:3)

考虑

1<=year1<=9999

应为1<=year1&&year1<=9999

原因是C ++不是数学语言。

1<=year1

是一个返回布尔值的表达式,可以是truefalse,然后将布尔结果与9999进行比较是错误的。

其他行也有这个问题,纠正它。

答案 1 :(得分:1)

试试这个:

cout << "Please give the two dates!\n";
    cin >> year1 >> m1 >> d1 >> year2 >> m2 >> d2;
    if ((1 <= year1) && (year1 <= 9999) &&
        ((1 <= year2) && (year2 <= 9999)) &&
        ((1 <= m1) && (m1 <= 12)) &&
        ((1 <= m2) && (m2 <= 12)) &&
        ((1 <= d1) && (d1 <= 31)) &&
        ((1 <= d2) && (d2 <= 31)))
    {
        cout << "ok\n";
    }
    else
    {
        cout << "notOK";
    }
}