c++ - 程序只执行第一个 IF 语句

标签 c++ if-statement

我目前遇到一个问题,我的程序只会执行第一个 if 语句,其中它将 'w' 乘以 3.5,即使 'w' 不符合要求。如果我输入 4,则输出变为 14 (4*3.5),而实际上它应该是 34 (4*8.5),因为重量在 3 到 10 磅之间。我确定修复很简单,但我似乎找不到它!

#include <iostream>
using namespace std;

int main()
{
float w, price;
cout << "Enter weight of package : ";
cin >> w;

if (0 < w <= 1)
{
    price = 3.5 * w;
}
else if (1 < w <= 3)
{
    price = 5.5 * w;
}
else if (3 < w <= 10)
{
    price = 8.5 * w;
}
else if (10 < w <= 20)
{
    price = 10.5 * w;
}
else if (20 < w <= 30)
{
    price = 12.5 * w;
}
else if (30 < w)
{
    cout << "The package cannot be shipped" << endl;
}
else
    cout << "Invalid input" << endl;
cout << "Weight : " << w << " lbs" << endl;
cout << "Shipping cost : $" << price << endl;
}

最佳答案

您可能打算使用:

if (0 < w && w <= 1)

代替:

if (0 < w <= 1)

您当前的方法(使用您的示例,其中 w = 4)评估如下:

if ((0 < 4) <= 1)

简化为:

if (1 <= 1)

计算结果为 true

根据 C++ 标准(第 4.7 节,第 4 条):

If the source type is bool, the value false is converted to zero and the value true is converted to one.

关于c++ - 程序只执行第一个 IF 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37557301/

相关文章:

c++ - 如何获取WM_TIMER 的独占定时器ID?

c++ - move 的对象仍然被破坏?

c++ - 在 Linux 上交叉编译 Windows 应用程序时如何链接到 Winsock?

javascript - 使用 val() 和 keyup() 的 2 个变量的 jQuery if 语句

c - '<' 在 if 语句中不起作用

c++ - 如何通过id获取线程对象?

c++ - 相当于 boost::file_system::no_check in boost::filesystem V3?

Javascript 双 If 语句

Java....为输入中的每个字符打印 1 个错误

r - 带有因子变量输出的 ifelse 语句