c++ if else语句没有显示正确的值

C++ if else statements does not display the correct values

本文关键字:显示 if else 语句 c++      更新时间:2023-10-16

我应该让用户输入他们的购买价格来查找运费。我遇到的问题是,如果我输入任何高于1000美元的值,那么运输价值将始终是8美元。

#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
void main()
{
    double saleAmount, shipping = 0;

    cout << "Enter a purchase amount to find out your shipping charges." << endl;
    cout << "Please enter the amount of your purchase: $" << endl; cin >> saleAmount; 
    if (saleAmount > 5,000.00)
    {
        shipping = 20.00; 
    }
     else if (saleAmount > 1,000.00)
     {
        shipping = 15.00;
    }

这是它不识别超过$10.00的运费的地方。如果我在主机应用中输入1500,它会告诉我运费是10美元。价值超过5000美元的也一样。我想看看出了什么问题,可是我怎么也找不到。

    else if (saleAmount > 500.00)
    {
        shipping = 10.00;
     }
    else if (saleAmount > 250.00)
    {
        shipping = 8.00;
    }
    else
    {
        shipping = 0.00;
    }
    if (shipping == 0.00)
    {
        cout << "Error incorrect input" << endl;
    }
    else
    {
        cout << "The shipping charge on a purchase of $ " << saleAmount << " is $" << shipping << endl;
    }
}
语句
if (saleAmount > 5,000.00)

等价于:

if ( (saleAmount > 5) , 000.00)

计算结果为

if ( 0.000 )

因此,if语句下的代码块永远不会执行。

正如在评论中指出的那样,从数字中删除,。用途:

if (saleAmount > 5000.00)

这段代码最严重的问题在这几行:

 if (saleAmount > 5,000.00)
 else if (saleAmount > 1,000.00)

当我用GCC编译程序并打开所有警告时,这些行产生以下消息:

warning: left operand of comma operator has no effect

你现在明白问题是什么了吗?

删除,从5000和1000,它应该工作。

if (saleAmount > 5000.00)
else if (saleAmount > 1000.00)