C++嵌套if语句,基本货币交换

C++ nested if statments, basic currency exchange

本文关键字:货币 交换 嵌套 if 语句 C++      更新时间:2023-10-16

我的if语句有一个简单的C++问题,程序将值作为初始if参数运行,而不是执行else-if。此外,我还尝试进行编码,以便如果函数的结果等于1,它将键入一个语法正确的语句。除了使用另一个if语句之外,还有更好的方法吗?

int main()
{
cout << "Please type out amount and currency type to convert to dollars.n";
double val1;
string currency;
double result = 0;
cin >> val1 >> currency;
if (currency == "yen" || "y")
{
result = val1/100;
if (result == 1) {
cout << "You have " << val1 << "yen which equals n"
<< result << ", dollar.";
}
else
cout << "You have " << val1 << "yen which equals n"
<< result << ", dollars.";
}
else if (currency == "euros" || "e")
{
result = val1*1.25;
if (result == 1) {
cout << "You have " << val1 << "euros which equals n"
<< result << ", dollar.";
}
else
cout << "You have " << val1 << "euros which equals n"
<< result << ", dollars.";
}
else if (currency == "pounds" || "p")
{
{
result = val1 *1.2;
if (result == 1) {
cout << "You have " << val1 << "pounds which equals n"
<< result << ", dollar.";
}
else
cout << "You have " << val1 << "pounds which equals n"
<< result << ", dollars.";
}
}
else
cout << "I didn't understand, please try again.n";
}

当您键入if (currency == "yen" || "y")时,您可能希望它表示";如果currency等于"yen"或者如果它等于"y",则做某事;。

然而,这并不是if语句的实际作用。if语句

if (currency == "yen" || "y")

首先测试字符串currency是否等于"yen",如果不等于,它自己计算"y"并检查它是否等于true。

在这种情况下;y";将被截断为bool,这意味着它将评估为true(因为"y"不等于0(。因此,您的第一个if语句将始终求值为true!

若要解决此问题,请将if语句替换为if (currency == "yen" || currency == "y")


对于第二个问题,您可以使用条件运算符,其工作原理如下:

cout << "You have " << (val1 == 1 ? "thing" : "things") << endl;

在这种情况下,条件是(val1 == 1 ? "thing" : "things")。它检查是否为val1 == 1,如果为true则返回"thing",否则返回"things"