忽略第二个 if 语句

Posted

技术标签:

【中文标题】忽略第二个 if 语句【英文标题】:Ignoring second if statement 【发布时间】:2013-02-04 16:48:32 【问题描述】:

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

我希望它询问用户坦克是否是圆形的,他们会回答“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;

【问题讨论】:

你在学习什么书?更具体地说,是什么让您认为您的预期比较是if (Circle = 'Y' or 'y')?您可能应该获得比现在更高质量的 C++ 学习资源 【参考方案1】:

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

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

进入

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

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

进入

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

【讨论】:

还可以考虑使用touppertolower 来减少比较次数:if (toupper(Circle) == 'N')【参考方案2】:

你的if语句条件完全错误;这其中的任何部分都没有你认为的那样:if (Circle = 'Y' or 'y').

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

你写的基本上是这样的:

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

  

并且字符“Y”转换为布尔值true,就像字符“N”一样,因此if 语句的两个条件都评估为真。

【讨论】:

【参考方案3】:

将您的 if 语句更改为

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

比较是==,而赋值是=

【讨论】:

以上是关于忽略第二个 if 语句的主要内容,如果未能解决你的问题,请参考以下文章

jQuery忽略第二个条件[重复]

如果第一个通知在 swift 中被忽略,则安排第二个通知(或者如果通知被忽略,则完成任何操作)

XmlTextReader 忽略第二个和第三个 Profile 元素

从qt中第二个图形视图的场景中忽略drawForeground()

约束两个视图以使用视觉格式填充屏幕时忽略第二个视图的大小

插入忽略 - 询问MySQL if语句是否被忽略