如果检查不起作用,则 C++

c++ if check doesn't work proprely

本文关键字:C++ 不起作用 检查 如果      更新时间:2023-10-16

我正在努力制作一个日计数器来计算两个日期之间的天数,但支票没有像我想要的那样工作。问题是它传递了我给它的任何值,例如它认为一个月内有 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";
}

考虑

1<=year1<=9999

应该1<=year1&&year1<=9999

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

1<=year1

是一个返回布尔值的表达式,要么是true要么是false,那么将布尔结果与 9999 进行比较是错误的。

其他行也有这个问题,请纠正一下。

试试这个:

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 << "okn";
}
else
{
cout << "notOK";
}
}