我无法让我的if语句起作用。无论如何 如果声明不断出现,周末的数字。 我知道我之前曾问过类似的问题,但无论我尝试过什么,它都无法运作
#include <iostream>
#include <string>
using namespace std;
int main ()
{
int day;
cout << " Enter day of the week " << endl;
cin >> day;
switch (day)
{
case 1 :
case 6 :
case 7 :
cout << "weekend";
break;
case 2 :
case 4 :
cout << "going to C++ Class";
break;
case 3 :
case 5 :
cout << "studying for C++ Class";
break;
default :
cout << "invalid day number";
}
if ( day == 1 || 6 || 7)
cout << "weekend" << endl;
else
if (day == 2 || 4)
cout << "Going to C++ Class";
else
if (day == 2 || 5)
cout << "studying for C++ Class";
else
if ( day < 1 || day > 7)
cout << "bad day number";
system("pause");
return 0;
}
答案 0 :(得分:4)
更改
if ( day == 1 || 6 || 7)
到
if ( day == 1 || day == 6 || day == 7)
对于某些类似的if
条件也一样。
您的原始测试条件if (day == 1 || 6 || 7)
等同于if ((day == 1)||6||7)
,始终评估为真,因为所有非零数字(在本例中为6
和7
)都是评估为真。
答案 1 :(得分:1)
逻辑OR运算符||
仅对 boolean 值进行操作,其中6
和7
等字面值不符合条件。您需要使用C ++ <,>,<=,>=,==,!,etc
中提供的关系运算符将条件分隔为有效布尔语句。尝试使用:
if (day == 1 || day == 6 || day == 7)
6
和7
实际上是C ++中的 truthy 值,并且会使您的条件始终为真,您当前的语句相当于:
if(day == 1 || true || true)
总是是真的。
答案 2 :(得分:0)
C和C ++可以将任何数值解释为逻辑值。零是错误的,其他任何事情都是真的。因此语法如下:
if ( day == 1 || 6 || 7)
被解释为“if(day是一个)或(6不为零)或(seven不为零)然后......”
写这个的正确方法是
if ( day == 1 || day == 6 || day == 7)
答案 3 :(得分:0)
使用if ( day == 1 || 6 || 7)
它将首先执行day == 1,它将返回0或1.然后它将继续使用非零(即真)数字并始终给出1个结果,即为真。 / p>
将其更改为if ( day == 1 || day == 6 || day == 7)
if (day == 2 || day== 4)
和
if (day == 2 || day == 5)