忽略第二个if语句

时间:2013-02-04 16:48:32

标签: c++ if-statement dev-c++

我正在尝试编写一个程序来计算添加到球形或矩形鱼缸中的体积和调节剂的量。

我希望它询问用户坦克是否是圆形的,他们将回答'y','Y'或'n','N'。但是,每当我运行程序并输入n或N时,它仍会运行y或Y的if语句。

请注意,我对这一切都很陌生。这是编程和逻辑类的介绍。

这是我的源代码:

#include <iostream>

using namespace std;

int main()
{
char Circle = ' ';
int RADIUS = 0;
int HEIcircle = 0;
int LEN = 0;
int WID = 0;
int HEI = 0;
double AMTcondCIR;
double AMTcondREC;
cout << "Is tank circular? ";
cin >> Circle;

if (Circle = 'Y' or 'y')
{

cout << "Enter radius: ";
cin >> RADIUS;
cout << "Enter height: ";
cin >> HEIcircle;
AMTcondCIR = ((4/3) * 3.14 * (RADIUS^3)) * 0.01;
cout << "Amount of Conditioner to add (in mL): " << AMTcondCIR << endl;
}
if (Circle = 'N' or 'n')
{

cout << "Enter length: ";
cin >> LEN;
cout << "Enter width: ";
cin >> WID;
cout << "Enter height: ";
cin >> HEI;
AMTcondREC = (LEN * WID * HEI) * 0.01;
cout << "Amount of Conditioner to add (in mL): " << AMTcondREC << endl;
}
system("pause");
return 0;
}

3 个答案:

答案 0 :(得分:3)

在C ++中=是赋值运算符。为了平等,请使用==。 也就是说,改变

if (Circle = 'Y' or 'y')

if (Circle == 'Y' || Circle == 'y')

if (Circle = 'N' or 'n')

if (Circle == 'N' || Circle == 'n')

答案 1 :(得分:1)

您的if语句条件完全错误;没有任何一部分符合你的想法:if (Circle = 'Y' or 'y')

您正在寻找if (Circle == 'Y' || Circle == 'y')。你写的东西有几个原因是错的;它使用赋值运算符(=而不是==),而二进制or的另一半始终为真。

你写的基本上是这样的:

if ('Y') {
  if ('y') {

  }
}

和'Y',角色,转换为布尔true,就像字符'N'一样,所以if语句的条件都评估为真。

答案 2 :(得分:1)

将您的if语句更改为

if (Circle == 'Y' || Circle == 'y')
...
if (Circle == 'N' || Circle == 'n')

比较为==,而作业为=