为什么无论输入如何,我的第一个 "if" 语句都会执行?
Why is my first "if" statement executing regardless of input?
这就是正在讨论的程序,非常简短和甜蜜:
// Lab 5 Exercise 1
// Financial Aid Program
//
// Written by: Jared T. Fisher
#include <iostream>
#include <string>
using namespace std;
int main()
{
long int _income; // declaring the variables
char yesNo;
cout << "Are you an undergrad student?" ; // determining if they are an undergrad or not.
cin >> yesNo;
if ((yesNo = 'N') || (yesNo = 'n'))
{
cout << "You do not qualify for financial aid.";
}
else if ((yesNo = 'Y') || (yesNo = 'y'))
{
cout << "What is your current yearly income?";
cin >> _income;
if (_income <= 15000 && _income >= 0) // determining which aid they qualify for.
{
cout << "You qualify for $1000 of financial aid";
}
else if (_income > 15000)
{
cout << "You qualify for $500 of financial aid";
}
else
{
cout << "Your income must be greater than or equal to 0. Please close the program and try again.";
}
}
else
{
cout << "Your inputted value must be either 'y' or 'n'. Please close the program and try again.";
}
cout << endl << endl;
return 0;
} // end function main()
总之,
如果用户输入'n'或'n',他们立即被告知他们不符合条件。
如果用户输入"y"或"y",则会询问他们的年收入,并由此计算出资格。
如果用户输入了其他的输入,他们会得到一个错误消息。
然而,当我运行这个程序时,无论我输入'n', 'y'还是'棉花糖',它总是返回:
"You do not qualify for financial aid."
好像我输入了'n'或'n'。我的代码有什么问题?
if
语句包含赋值(yesNo = 'N'
等),并且给定yesNo
非零,它的求值为true
并执行分支。
为了纠正这个错误, if
应该包含相等性测试==
;
if ((yesNo == 'N') || (yesNo == 'n'))
您可能会对其他if
语句执行相同的操作。与往常一样,以最高的警告级别编译,并且编译器通常会捕获并警告您这种情况。
通常,可以在if
条件下进行赋值,但通常不建议这样做,因为它很容易导致错误的代码。
修复第一个if
语句
if ((yesNo == 'N') || (yesNo == 'n'))
=
是赋值操作符,==
是比较操作符。
应该使用比较运算符'=='而不是赋值运算符'='
if ((yesNo == 'N') || (yesNo == 'n'))
{
cout << "You do not qualify for financial aid.";
}
如前所述,if语句无效if ((yesNo = 'N') || (yesNo = 'n'))
代替if ((yesNo == 'N') || (yesNo == 'n'))
if (('N' == yesNo) || ('n' == yesNo))
虽然这个编码规则一开始并不明显,但是比较操作符中的任何错误(这是一种相当常见的输入错误)都会导致编译器错误error: lvalue required as left operand of assignment
,无论编译器警告配置
相关文章:
- 我的简单if-else语句是如何无法访问的代码
- Insert函数不适用于2 if语句C++
- If语句未被求值C++
- C++嵌套if语句,基本货币交换
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 是否可以使用if constexpr删除控制流语句
- 我似乎对if/else的基本语句有问题:/
- If语句在c++中被忽略
- 比较if语句中的数组值和int值
- 以在Qt中的IF语句中设置时间延迟
- Craps游戏问题,忽略if语句
- c++:定义if语句中的模板
- C++嵌套的 If 语句中,它无法按预期工作
- 如果中的多个语句是否与多个 if 相同?
- C++ If/Else 语句被跳过
- 使用语句if时逻辑的问题
- 如何添加语句if-else
- 如何将语句if(isalpha(c))从c++转换为MIPS ?
- 在if语句if C++中创建对象时出现作用域问题
- if语句-if/else和参数放置C++